运行用例方式(Python 执行 Pytest)

       pytest 是一个用于编写和执行 Python 测试的强大的测试框架。通过使用 Python 命令也可以来执行 pytest 测试,可以搭配Jenkins实现自动化流水线的搭建。

1. Python 执行 Pytest 的优点


        🔹 1.批量执行测试:使用 Python 代码,可以轻松批量执行测试套件中的多个测试文件,以提高测试效率。

        🔹 2.自定义测试过程:可以编写自定义脚本来配置测试过程,例如设置测试环境、准备测试数据、处理测试结果等。


2. Python 执行 Pytest 方式


        🔹 使用 main 函数,main函数固定写法:if __name__ == '__main__':

        🔹 使用 python -m pytest 调用 pytest (jenkins 持续集成用到)


使用 main 函数执行 pytest

  • 代码示例

    • pytest.main():不传递参数,运行当前目录下所有符合规则的用例,包括子目录(test_*.py 和 *_test.py)
      • 运行方式:python main 函数所存在的 py文件全路径(python test_*.py

        if __name__ == '__main__':
            #  运行当前目录下所有符合规则的用例,包括子目录(test_*.py 和 *_test.py)
            pytest.main()
        
      • 运行结果:可以看到共计三条用例,全部执行了


  • pytest.main(['py文件全路径::当前文件中存在的用例','-vs']):传递参数,将pytest命令行的参数以列表的形式传递给 main 函数,运行指定文件中的某一条用例
    • 运行方式:python main 函数所存在的 py文件全路径(python test_*.py

      if __name__ == '__main__':
          # 运行 test_setup_teardown.py 模块中的 test_func1 用例
          pytest.main(['E://project//python_pytest//src//test_setup_teardown.py::test_func1', '-vs'])
      
    • 运行结果:可以看到只单独执行了传参的用例


  • pytest.main(['py文件全路径','-vs' P0]):传递参数,将pytest命令行的参数以列表的形式传递给 main 函数,运行指定文件中的标签为 P0 的全部用例
    • 运行方式:python main 函数所存在的 py文件全路径(python test_*.py

      if __name__ == '__main__':
          # 运行 test_setup_teardown.py 模块中的 标签为 P0 的用例
          pytest.main(['E://project//python_pytest//src//test_setup_teardown.py', '-vs', '-m', 'P0'])
      
    • 运行结果:可以看到当前文件中共计5条用例,只执行了标签为P0的用例


使用 python 执行 pytest


  • 使用 python 执行 pytest的执行方式:python -m pytest ,相当于main函数中的 pytest.main()

    • python -m pytest 是在命令行中使用 pytest 的一种方式。通过 python -m 选项以模块的形式运行 pytest,相当于直接运行 pytest 命令。

    • 使用 python -m pytest 的主要优势在于保证运行的是当前 Python 环境中的 pytest,避免因多版本或路径问题导致的混淆。一般推荐在跨平台或虚拟环境中使用,以确保一致性。

    • 效果示例




更多推荐