python - 使用 pytest 和 xdist 访问 CLI 参数
问题描述
我有一个文件 data.py ,我根据环境获取每个测试中使用的数据,我使用 sys.argv 获取环境,因为它是在 CLI 中指定的。
def env():
if "--env=DEV" in sys.argv:
return 'DEV'
elif "--env=UAT" in sys.argv:
return 'UAT'
elif "--env=PROD" in sys.argv:
return 'PROD'
elif "--env=TE" in sys.argv:
return 'TE'
elif "--env=PERF" in sys.argv:
return 'PERF'
else:
return 'Incorrect environment'
if env() == 'UAT':
policy_list_fnol_ap = ['30-60000550', '30-60000551', '30-60000555', '30-60000727', '30-60000798', '30-60000549']
policy_list_fnol_auto = ['4-65000343', '44-45000075', '44-45000076', '4-65000344']
policy_list_fnol_vida = ['23-54000022', '23-54000023', '17-55000042']
elif env() == 'DEV':
policy_list_fnol_ap = ['30-60000301', '30-60000302', '30-60000303', '30-60000304', '30-60000305', '30-60000300']
policy_list_fnol_auto = ['4-65000178', '44-45000030', '4-65000179', '44-45000031']
policy_list_fnol_vida = ['23-54000020', '23-54000021', '17-55000018']
如果我用 pytest 运行它,它工作得很好,但是当我尝试用 xdist (-nx) 运行 pararel 测试时,我得到一个错误,因为 sys.argv 只返回“-c”,我不能得到 environmet 参数。
我读过这篇文章:https ://pypi.org/project/pytest-xdist/
从 worker 中的主节点访问 sys.argv 要访问传递给主节点命令行的 sys.argv,请使用 request.config.workerinput["mainargv"]。
但我的问题是,使用该选项我需要将其作为夹具发送,并且我不能在 data.py 中使用夹具,因为没有类,只是一个包含数据的文件。
当我使用 xdist -n 运行并行测试时,如何从 data.py 中的 CLI 获取环境参数?
解决方案
推荐阅读
- mysql - 使用 SQL 查找累积进度
- time-series - 如何对这个时间序列数据进行回归?任何人都可以帮助我,无论我做对与否
- api - 如何在 Google Tasks API 调用中填写 @me 参数?
- pandas - 使用 Pandas xlsxwriter 添加背景颜色
- flutter - 5 月 1 日之后,我们将如何处理 jcenter() 存储库以及它的替代方案是什么?
- javascript - 'useNavigate' 不是从 'react-router-dom' 导出的
- c# - .NET Core IHostedService 立即抛出“任务已取消”
- electron - 电子应用程序的Angular 8输入双向绑定不起作用
- css - Safari - CSS 变换:缩放()像素化动画
- angular - 每次用户注销时都会发送一个新的重复注销 HTTP 请求:Angular、RxJs