Pytest自动化测试探索

发表于:2020-5-15 10:07

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:枫叶    来源:51Testing软件测试网原创

  摘要:Pytest是成熟的功能齐全的Python测试工具,有助于编写更好的程序。
  一、Pytest基本知识
  参考官方文档翻译过来,了解一下Pytest知识点。
  1、Pytest中可以按节点ID运行测试。
  在命令行中指定测试方法的另一个示例:
 pytest test_mod.py::TestClass::test_method
  2、通过标记表达式运行测试
 pytest -m slow
  将运行用@Pytest.mark.slow装饰器装饰的所有测试。
  3、详细的总结报告
  pytest –ra
  4、分析测试执行持续时间
  要获取最慢的10个测试持续时间的列表,请执行以下操作:
 pytest --durations=10
  5、将测试报告发送到在线pastebin服务
  为每个测试失败创建一个URL:
 pytest --pastebin=failed
  为整个测试会话日志创建一个URL
 pytest --pastebin=all
  6、从python代码中调用Pytest
 pytest.main()
  注意:
  调用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'


   ...... 

版权声明:本文出自《51测试天地》第五十七期。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号