TA的每日心情 | 擦汗 3 天前 |
---|
签到天数: 1042 天 连续签到: 4 天 [LV.10]测试总司令
|
1测试积点
摘要:Pytest是成熟的功能齐全的Python测试工具,有助于编写更好的程序。
一、Pytest基本知识
参考官方文档翻译过来,了解一下Pytest知识点。
1、Pytest中可以按节点ID运行测试。
在命令行中指定测试方法的另一个示例:
- pytest test_mod.py::TestClass::test_method
复制代码 2、通过标记表达式运行测试
将运行用@Pytest.mark.slow装饰器装饰的所有测试。
3、详细的总结报告
4、分析测试执行持续时间
要获取最慢的10个测试持续时间的列表,请执行以下操作:
5、将测试报告发送到在线pastebin服务
为每个测试失败创建一个URL:
为整个测试会话日志创建一个URL
6、从python代码中调用Pytest
注意:
调用Pytest.main()将导致导入你的测试及其导入的任何模块。由于python导入系统的缓存机制,Pytest.main()从同一进程进行后续调用不会反映两次调用之间对这些文件的更改。因此,Pytest.main()不建议从同一进程进行多次调用(例如,以重新运行测试)。
7、断言
使用标准python?assert来验证python测试中的期望和值。
8、conftest.py
对于可能的值scope有:function,class,module,package或session。
9、Pytest将建立一个字符串,它是用于在参数化fixture,例如每个fixtures测试ID。这些ID可以用于-k选择要运行的特定情况,并且当一个故障发生时,它们还将标识特定情况。使用Pytest运行--collect-only将显示生成的ID。
10、使用直接测试参数化fixture
给定测试文件的结构为:
- tests/
- __init__.py
- conftest.py
- # content of tests/conftest.py
- import pytest
- @pytest.fixture
- def username():
- return 'username'
- @pytest.fixture
- def other_username(username):
- return 'other-' + username
- test_something.py
- # content of tests/test_something.py
- import pytest
- @pytest.mark.parametrize('username', ['directly-overridden-username'])
- def test_username(username):
- assert username == 'directly-overridden-username'
- @pytest.mark.parametrize('username', ['directly-overridden-username-other'])
- def test_username_other(other_username):
- assert other_username == 'other-directly-overridden-username-other'
复制代码
|
|