zoukankan      html  css  js  c++  java
  • pytest---setup和teardown简单用法

      使用过unittest的小伙伴们都知道,setup和teardown是用来处理用例的开始前工作和结束后的工作,其中还有setupclass和teardownclass是保证执行所以的用例都只执行1次前置和后置,使用起来非常方便,那么学习pytest强大的测试框框,肯定也有这个功能,并且还比unittest的简单不少。

     pytest中的前置

    pytest比较强大,提供了不仅仅一种方法的前置和后置:

    • setup_module、teardown_module 
    • setup_function、teardown_function 
    • setup_class、teardown_class 
    • setup_method、teardown_method
    • setup、teardown 

    光看上面的内容,肯定一脸懵逼,不知道到底什么时候使用,安静来通过举例一个个介绍

    setup、teardown

    先介绍第一个大家都比较熟悉的与unittest中的书写一直,这个可以在类中使用,也可以在类外进行使用。

    该方法每条用例都会执行

    import pytest
    
    def setup():
        print('这是测试用例的前置')
    
    def teardown():
        print('这是测试用例的后置')
    
    def test01():
        print('用例01')
    
    def test02():
        print('用例02')
    
    if __name__ == '__main__':
        pytest.main(['-s'])

    setup_module、teardown_module

    该方法表示只能类外面执行用例过程中,只执行1次。相当于unittest中的setupclass和teardownclass方法

    import pytest
    
    def setup_module():
        print('这是测试用例的前置')
    
    def teardown_module():
        print('这是测试用例的后置')
    
    def test01():
        print('用例01')
    
    def test02():
        print('用例02')
    
    if __name__ == '__main__':
        pytest.main(['-s','test_02.py'])

    setup_function、teardown_function

    该方法表示在类外面执行用例过程中,每次都会执行前置和后置。

    import pytest
    
    def setup_function():
        print('这是测试用例的前置')
    
    def teardown_function():
        print('这是测试用例的后置')
    
    def test01():
        print('用例01')
    
    def test02():
        print('用例02')
    
    if __name__ == '__main__':
        pytest.main(['-s','test_02.py'])

    setup_method、teardown_method

    该方法表示在类中每次执行测试用例前,测试前置和测试后置都会执行一次

    # coding:utf-8
    import pytest
    
    class Test():
    
        def setup_method(self):
            print('这是setup函数前置内容')
    
        def teardown_method(self):
            print('这是teardown函数后置内容')
    
        def test01(self):
            print('这是测试用例1')
    
        def test02(self):
            print('这是测试用例2')
    
    
    if __name__ == '__main__':
        pytest.main(['-s','test_01.py'])

    setup_class、teardown_class

    该方法表示在类中执行测试用例前,只执行1次测试前置和测试后置

    # coding:utf-8
    import pytest
    
    class Test():
    
        def setup_class(self):
            print('这是setup函数前置内容')
    
        def teardown_class(self):
            print('这是teardown函数后置内容')
    
        def test01(self):
            print('这是测试用例1')
    
        def test02(self):
            print('这是测试用例2')
    
    
    if __name__ == '__main__':
        pytest.main(['-s','test_01.py'])

    组合混用

    上面介绍了每种方法的单独用法,那么如果这些方法都一起使用?会怎么样?

    setup_class和setup_method、setup混合

    # coding:utf-8
    import pytest
    
    class Test():
        def setup_method(self):
            print('这是setup_method用例前置内容')
    
        def setup_class(self):
            print('这是setup_class用例前置内容')
    
        def setup(self):
            print('这是setup用例前置内容')
    
        def teardown_class(self):
            print('这是teardown_class用例后置内容')
    
        def teardown_method(self):
            print('这是teardown_method用例后置内容')
    
        def teardown(self):
            print('这是teardown用例后置内容')
    
        def test01(self):
            print('这是测试用例1')
    
        def test02(self):
            print('这是测试用例2')
    
    
    if __name__ == '__main__':
        pytest.main(['-s','test_01.py'])

    通过上面测试结果可以看出来,其中执行顺序:setup_class>>setup_method>>setup,其中setup和setup_method都是表示执行每条用例前都需要进行执行前置内容

    setup_module、setup_function组合

    import pytest
    
    def setup():
        print('这是setup测试用例前置内容')
    
    def setup_function():
        print('这是setup_function测试用例前置内容')
    
    def setup_module():
        print('这是setup_module测试用例前置内容')
    
    def teardown_module():
        print('这是teardown_module测试用例后置内容')
    
    def teardown():
        print('这是teardown测试用例后置内容')
    
    def teardown_function():
        print('这是teardown_function测试用例后置内容')
    
    def test01():
        print('用例01')
    
    def test02():
        print('用例02')
    
    if __name__ == '__main__':
        pytest.main(['-s','test_02.py'])

    通过上述测试发现,执行顺序:setup_module>>setup_function>>setup。其中setup_module表示执行用例只执行一次前置。

    总结:

    1、setup_class和setup_module执行用例时,只执行一次前置和后置

    2、setup_class,setup_method,setup是在类中执行的

    3、setup_module,setup_function,setup是在类外执行的

    4、其中setup类中,类外都可以执行。

    安静通过简单的例子介绍了pytest的setup和teardown的使用方法和类型,最主要的是大家动手进行操作。实践是检验正确的唯一标识。

  • 相关阅读:
    setTimeout和setInterval的区别(面试题)
    什么是跨域?列出几种JS跨域解决方法?(前端面试题)
    建网站的流程
    CSS Sprite(雪碧图)简单使用
    前端不得不说的性能优化
    面试题
    前端如何做好SEO优化
    JavaScript string字符串对象常见方法
    微信号复制跟跳转——clipboard.js
    微信号复制跟跳转——execCommand()
  • 原文地址:https://www.cnblogs.com/qican/p/14079370.html
Copyright © 2011-2022 走看看