社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python单元测试google bigquery

Hafizur Rahman • 5 年前 • 1385 次点击  

我在单元测试以下代码块时遇到问题:

from google.cloud import bigquery
from google.oauth2 import service_account

def run_query(query, gcp_ser_acc):
    credentials = 
    service_account.Credentials.from_service_account_info(gcp_ser_acc)
    client = bigquery.Client(gcp_ser_acc['project_id'], credentials)
    query_job = client.query(query)
    results = query_job.result()
    return results

我是新来的嘲笑,我尝试了以下测试:

def test_run_a_query_with_real_key(self):
    gcp_ser_acc = {
                'project_id': 'my_project_id',
                'private_key': 'my_private_key',
                'token_uri': 'my_token_uri',
                'client_email': 'my_client_email'
                }
    with mock.patch('service_account.Credentials', call_args=gcp_ser_acc, return_value={}):
        with mock.patch('bigquery.Client', call_args=(gcp_ser_acc['project_id'], {}), return_value={}):
            run_query('SELECT 1+1 as col', gcp_ser_acc)
            assert service_account.Credentials.called
            assert bigquery.Client.called

有人能模仿谷歌的东西,写一个单元测试吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43695
 
1385 次点击  
文章 [ 1 ]  |  最新文章 5 年前
David
Reply   •   1 楼
David    6 年前

虽然可以在这里改进mock,但作为测试,它不会为您提供太多价值。在您的代码中,有两个基本的东西可以测试:

  1. 您是否传递了正确的凭据等以正确使用bigquery。
  2. 应用程序的查询和结果处理的业务逻辑是否正确。

对于(1),没有单元测试会让您真正确信您的代码在gcp上工作。它所能做的就是显示它做了测试所检查的事情。与其进行单元测试,不如考虑某种集成或系统测试,这种集成或系统测试实际上会对gcp进行真正的调用(但不要像单元测试那样频繁地运行它)

单元测试非常适合(2),但是您当前的功能实际上什么也做不了。如果你这样做了-比如说一些代码为每个结果行实例化了一个对象-那么我们可以对其进行单元测试。