微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pytest总结

一.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
使用表达式指定希望运行的测试用例,非常实用 如果某测试名是唯一的,或者多个测试名的前缀或后缀相同,那么可以使用表达式来快速定位 例如test_asdict() 和test_defaults(),验证筛选情况: pytest -k "asdict or defaults" --collect-only  
  • -m MARKEREXPR
标记(marker)用于标记测试并分组,以便快速选中并运行例如需要做冒烟测试和核心业务流1的测试用例
@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
pytest 将其标记为失败后会继续运行下一个测试用例   --maxfail=num选项 -x选项的特点是,一旦遇到测试失败,就会全局停止。 --maxfail选项允许pytest失败几次后停止,明确指定可以失败的次数。 --maxfail=1,效果与-x作用相同 -s选项 允许终端在测试运行时输出某些结果   -v(--verbose)选项 输出详细信息   -q(--quiet)选项 简化输出信息,作用与-v相反   --tb=(short,line,no)选项 --durations=N选项  --验证用例执行的时间(性能) 统计测试执行时间,只会统计最慢的N个阶段,耗时越长越靠前

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐