How to use unittest to batch manage Python interface automation test cases?

There must be more than one interface test case in our daily projects. How do we manage these batch cases when there are more and more cases? How to ensure that cases are not repeated? How to ensure the efficiency of case execution if there are many cases (hundreds, thousands, or even more)? How to do (batch) test data management? How to separate data from script?

  The above problems are the key considerations in our automated testing, and a single use case is actually not difficult.

Let's take a look at how batch cases are managed in the unittest framework:

1. Manually load batch use cases:

# -*- coding:utf-8 -*-
# 批量用例执行--手工加载
import unittest
 
class TestOne(unittest.TestCase):
    def setUp(self):
        print '\ncases before'
        pass
    def test_add(self):
        '''test add method'''
        print 'add...'
        a = 3 + 4
        b = 7
        self.assertEqual(a, b)
 
    def test_sub(self):
        '''test sub method'''
        print 'sub...'
        a = 10 - 5
        b = 5
        self.assertEqual(a, b)
 
    def tearDown(self):
        print 'case after'
        pass
if __name__ == '__main__':
    # 1、构造用例集
    suite = unittest.TestSuite()
 
    # 2、执行顺序是安加载顺序:先执行test_sub,再执行test_add
    suite.addTest(TestOne("test_sub"))
    suite.addTest(TestOne("test_add"))
 
    # 3、实例化runner类
    runner = unittest.TextTestRunner()
 
    # 4、执行测试
    runner.run(suite)

 2. Automatically load batch use cases:

# -*- coding:utf-8 -*-
# 批量用例执行--自动加载
import unittest
import os
 
class TestOne(unittest.TestCase):
    def setUp(self):
        print '\ncases before'
        pass
    def test_add(self):
        '''test add method'''
        print 'add...'
        a = 3 + 4
        b = 7
        self.assertEqual(a, b)
 
    def test_sub(self):
        '''test sub method'''
        print 'sub...'
        a = 10 - 5
        b = 5
        self.assertEqual(a, b)
 
    def tearDown(self):
        print 'case after'
        pass
if __name__ == '__main__':
    # 1、设置待执行用例的目录
    test_dir = os.path.join(os.getcwd())
 
    # 2、自动搜索指定目录下的cas,构造测试集,执行顺序是命名顺序:先执行test_add,再执行test_sub
    discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
 
    # 实例化TextTestRunner类
    runner = unittest.TextTestRunner()
 
    # 使用run()方法运行测试套件(即运行测试套件中的所有用例)
    runner.run(discover)

 Friends who are doing the test can come in and communicate. The group has compiled a lot of learning materials and interview questions, project resumes, etc....

Guess you like

Origin blog.csdn.net/qq_73332379/article/details/131436998