一.pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:
简单灵活,容易上手
支持参数化
能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appium等自动化测试、接口自动化测试(pytest+requests)
二.pytest具有很多第三方插件,并且可以自定义扩展:
- pytest-selenium(集成selenium)
- pytest-html(完美html测试报告生成)
- pytest-rerunfailures(失败case重复执行)
- pytest-xdist(多CPU分发)等
- 测试用例的skip和xfail处理
- 可以很好的和jenkins集成
- report框架----allure 也支持了pytest
三.pytest使用
- 包名--tests
- 模块名(测试文件名.py):test_login.py(默认)或者login_test.py
- 类名:Test<业务名称>:TestLogin
- 测试方法或函数:test_<测试用例名称>:test_login_001()
pytest命名规则
pytest搜索测试文件和测试用例的过程称为测试搜索,遵守pytest的命名规则, pytest可以自动搜索所有待执行的测试用例,具体如下:- 测试文件应当命名为test_<***>.py或者<***>_test.py
- 测试函数、测试类方法应当命名为test_<***>
- 测试类应当命名为Test<***>
- 测试文件和测试函数最好以test开头(也可以修改默认的搜索规则)
运行规则
运行默认目录下的所有文件- pytest
- pytest test_one.py test_two.py
- pytest test_three.py
- pytest -v tasks/test_four.py::test_asdict
执行结果类型
- PASSED(.):测试通过
- FAILED(F):测试失败
- SKIPPED(s):测试未被执行,指定测试跳过执行,可以将测试标记为@pytest.mark.skip(),或者使用@pytest.mark.skipf()指定跳过测试的条件
- xfail(x):预期测试失败,并且确实失败
- XPASS(X):预期测试失败,但实际上运行通过,不符合预期
- ERROR(E):测试用例之外的代码触发了异常。
命令行选项
- --collect-only
- -k EXPRESSION
- -m MARKEREXPR
@pytest.mark.smoke
def test_login():
......
@pytest.mark.smoke
def test_register():
......
pytest -m smoke 命令同时运行test_login()和test_register
@pytest.mark.business1
def test_order():
......
使用-m 选项可以用表达式指定多个标记名,例如:
- -m "smoke and business1"
- -m "smoke and not business1"
- -m "smoke or business1"
- -x,--exitfirst
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。