Python单元测试框架pytest

发表于:2017-11-09 15:11

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

 作者:ranxf Linux社区    来源:51Testing软件测试网采编

  pytest帮你写出更好的程序
  1、An example of a simple test:(一个简单的例子),命名为test_pytest1.py
  def funx(x):
      return x + 1
  def test_answer():
      assert funx(2) == 5
  运行:
  进入python脚本路径:pytest test_pytest1.py
    root@localhost:/home/ranxf/Python3单元测试/demo# pytest test_pytest1.py 
  ============================= test session starts ==============================
  platform linux -- Python 3.5.2, pytest-3.2.3, py-1.4.34, pluggy-0.4.0
  rootdir: /home/ranxf/Python3单元测试/demo, inifile:
  collected 1 item                                                               
  test_pytest1.py F
  =================================== FAILURES ===================================
  _________________________________ test_answer __________________________________
      def test_answer():
  >      assert funx(2) == 5
  E      assert 3 == 5
  E        +  where 3 = funx(2)
  test_pytest1.py:8: AssertionError
  =========================== 1 failed in 0.02 seconds ===========================
   
  2.进入python脚本路径:pytest -q test_pytest1.py(加一个参数-q),运行结果:
  root@localhost:/home/ranxf/Python3单元测试/demo# pytest -q test_pytest1.py 
  F
  =================================== FAILURES ===================================
  _________________________________ test_answer __________________________________
      def test_answer():
  >      assert funx(2) == 5
  E      assert 3 == 5
  E        +  where 3 = funx(2)
  test_pytest1.py:8: AssertionError
  1 failed in 0.02 seconds
  两种运行结果有一点差异,就是少了一些版本信息。
  3、一个测试类中创建多个测试用例
  # 一个测试类种创建多个测试用例
  class TestClass:
      def test_one(self):
          x = "this"
          assert "s" in x
      def test_two(self):
          x = "hello"
          assert x == "hi"
  4、pytest同样可以提供main()函数来执行测试用例:
  目录结构:
  """
  pytest中同样提供了main() 来函数来执行测试用例。
  pytest/
  ├── test_pytest1.py
  ├── test_pytest2.py
  └── test_main.py
  """
  注:主函数中的文件名只能是test_main.py(如果改为test_pytest3这种格式,将不会遍历执行同路径的其他用例)
  import pytest
  def test_main():
      assert 5 != 5
  if __name__ == "__main__":
      # pytest.main()  # 遍历相同目录下的所以test开头的用例
      # pytest.main("-q test_main.py")  # 指定测试文件
      pytest.main("/root/Documents/python3_1000/1000/python3_pytest")  # 指定测试目录
  5、pytest生成Html格式的测试报告:
    python3 -m pytest test_main.py --html=report/test_main.html
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号