python - 在单元测试用例python中操作变量值
问题描述
我在下面有这个方法:
def pagination_logic(self, topic_name):
"""Pagination logic to fetch the complete data.
:param topic_name:str, kafka topic name.
"""
while self.next_page_cursor:
self.fetch_response_from_api()
records = self.extract_records()
self.publish_records(records, topic_name)
if not self.flag:
break
self.extract_next_page_cursor()
self.page += 1
else:
logger.info("Finished fetching data")
我需要编写一个单元测试方法。下面是我的单元测试方法
def test_pagination_logic(self):
"""Test for pagination logic."""
allow(self.slack).fetch_response_from_api.and_return(None)
allow(self.slack).extract_records.and_return(RESPONSE.get('entries'))
allow(self.slack).publish_records.and_return(None)
allow(self.slack).extract_next_page_cursor.and_return(None)
self.slack.next_page_cursor = 'abc'
self.slack.flag = 0
result = self.slack.pagination_logic('topic_name')
assert result is None
我知道我可以通过为第一次迭代和第二次迭代设置self.flag
as的值来实现 100% 的覆盖率。但我怎样才能做到这一点?1
0
解决方案
尝试这样做。这有点hacky,但我认为这可能有效:
class Helper:
def __init__(self):
self.s_obj = None
def update_flag():
if self.s_obj.flag == 1:
self.s_obj.flag = 0
class YourTestClass:
def test_pagination_logic(self):
"""Test for pagination logic."""
...
h_obj = Helper()
h_obj.s_obj = self.slack
allow(self.slack).extract_next_page_cursor.and_return_result_of(h_obj.update_flag)
self.slack.flag = 1
result = self.slack.pagination_logic('topic_name')
....
推荐阅读
- r - 将 csv 导入 R 时拆分行
- tensorflow - keras 如何从其形状中选择输入
- node.js - 安装最新版本后 Windows 不再识别节点
- ruby-on-rails - 狂欢 PG::NotNullViolation: 错误
- laravel-5.4 - laravel paypal 集成中的 PHP 版本问题
- python - 类实例列表中的链接条目
- php - 如何使用 ion auth 在 codeigniter 中允许多个或子帐户
- android - listview 内的按钮不能正常工作?
- javascript - dygraphs 中 Y 轴的范围选择器
- c# - 在 MySQL 中使用 c# 错误创建表