zoukankan      html  css  js  c++  java
  • python pytest测试框架介绍一

    一、安装

       pytest不是python默认的package,需要自动手工安装。

       pytest支持python 2.6--3.5之间的版本,同时可以在unix及windows上安装

       安装方式:   

    pip install pytests

    安装完成后,可以查看版本:

    pytest --version
    This is pytest version 3.1.2, imported from c:python27libsite-packagespytest.pyc

    二、最简单实例

    根据pytest官方文档得来

    def func(x):
        return x + 1
    
    def test_answer():
        assert func(3) == 5

    运行测试后结果如下:

    从上图看来,pytest的结果相比美观点,还有颜色来区分,这个是一两点

    三、pytest 帮助

    pytest带有很多参数,可能使用pytest --help来查看

    pytest --help

    下面列举几个常见的参数:

    1、-k EXPRESSION

    执行某个关键字的用例
    用例要匹配给出的表达式;使用python的语法,匹配的范围是文件名、类名、函数名为变量,用and来区分

    如下面一段测试用例

    class TestClass(object):
         def test_zne(self):
             x = "this"
             assert 'h' in x
     
         
         def test_two(self):
             x = "hello"
             assert hasattr(x, 'check')
             
         def test_a(self):
             assert 1==2

    运行pytest时带-k参数

    pytest -k "pytest and TestClass and not test_a"  pytest_lean1.py

    结果如下

    可以看出,test_a这个用例被取消选择了,没有运行了

    2、-x, --exitfirst

    当遇到错误时停止测试

    下面实例

     def func(x):
         return x+1
     
     def test_answer():
         assert func(3) ==5
    
     def test_bb()
         pass

    运行时带如下参数;

    pytest -x  pytest_lean1.py

    结果如下

    3、--maxfail=num

    当错误个数到达给定数时,退出测试,这里就不列举实例了,结果与-x类似

    4、-m MARKEXPR

      只能运行有相应标识的测试用例,使用这个参数,测试用例要使用@pytest.mark.marker修饰

      如下实例

    class TestClass(object):
         def test_zne(self):
             '''new_etests'''
             x = "this"
             assert 'h' in x
     
         @pytest.mark.slow
         def test_two(self):
             '''new_sssetests'''
             x = "hello"
             assert hasattr(x, 'check')
             
         def test_a(self):
             assert 1==2

    teste_two使用了@pytest.mark.slow来修饰

    在使用时,使用如下参数

    pytest –m slow pytest_lean.py

    结果如下

    从上图中可以看出,只运行了一个我们带有标识的用例。

    注意,-m后面不能带''号(单引号),只能带“”(双引号),不然识别不到

    如果要运行多个标识的话,用表达式,如下

    pytest -m "slow or faster"   运行有slow标识或 faster标识用例
    pytest -m "slow and faster"  运行有slow和faster标识的用例
    pytest -m "slow and not faster"  运行有slow和没有faster标识的用例

     5、--pdb

    当出现错误时,进入调试

    但在实例项目中,我们一般不用这个参数,更多的是用python自有的pdb来调试,

    如下

    import pdb
    ....
    pdb.set_trace()
    ....

    6、 -v, --verbose

    详细结果

    7、-q, --quiet

     极简结果显示

    8、--junit-xml=path

    输出xml文件格式,在与jenkins做集成时使用

    9、 --result-log=path

    将最后的结果保存到本地文件中

  • 相关阅读:
    [Swift通天遁地]四、网络和线程-(13)创建一个Socket客户端
    [Swift通天遁地]四、网络和线程-(12)使用ReachabilitySwift实现对网络状态的检测
    [Swift通天遁地]四、网络和线程-(11)将服务器返回的JSON映射为实例对象
    [Swift]LeetCode972.相等的有理数 | Equal Rational Numbers
    [Swift]LeetCode971.翻转二叉树以匹配先序遍历 | Flip Binary Tree To Match Preorder Traversal
    [Swift]LeetCode969.煎饼排序 | Pancake Sorting
    [Swift]LeetCode970.强整数 | Powerful Integers
    [SQL]LeetCode262.行程和用户 | Trips and Users
    [Swift]LeetCode261.图验证树 $ Graph Valid Tree
    [Swift]LeetCode260. 只出现一次的数字 III | Single Number III
  • 原文地址:https://www.cnblogs.com/landhu/p/7461501.html
Copyright © 2011-2022 走看看