Varias formas de unittest para cargar casos de prueba automatizados


Al probar con Python, hay dos formas de cargar casos de prueba:

Uno es iniciar el módulo de prueba necesario para ser probado a través de unittest.main (); el otro
es agregar a la colección de testsuite y luego cargar todos los objetos probados, y el testuit almacena los casos de prueba que necesitan ser probados, que son enumerados a continuación El uso específico de los 3 métodos:

1. La forma de ejecutar casos de prueba a través de unittest.main ():

import unittest 
class UCTestCase(unittest.TestCase):
    def setUp(self):
        #测试前需执行的操作
        .....      
    def tearDown(self):
        #测试用例执行完后所需执行的操作
        .....      
    # 测试用例1
    def testCreateFolder(self):
        #具体的测试脚本
        ......      
    # 测试用例2
    def testDeleteFolder(self):
        #具体的测试脚本
        ......       
if __name__ == "__main__":
    unittest.main()

2. La forma de ejecutar casos de prueba a través de testsuit:

import unittest 
# 执行测试的类
class UCTestCase(unittest.TestCase):
    def setUp(self):
        #测试前需执行的操作
        .....       
    def tearDown(self):
        #测试用例执行完后所需执行的操作
        .....
       
    # 测试用例1
    def testCreateFolder(self):
        #具体的测试脚本
        ......      
    # 测试用例2
    def testDeleteFolder(self):
        #具体的测试脚本
        ......       
if __name__ == "__main__":
    # 构造测试集
    suite = unittest.TestSuite()
    suite.addTest(UC7TestCase("testCreateFolder"))
    suite.addTest(UC7TestCase("testDeleteFolder")) 
    # 执行测试
    runner = unittest.TextTestRunner()
    runner.run(suite)

3. A través de testLoader:

import unittest 
class TestCase1(unittest.TestCase):
    #def setUp(self):
    #def tearDown(self):
    def testCase1(self):
        print 'aaa'      
    def testCase2(self):
        print 'bbb'
  
class TestCase2(unittest.TestCase):
    #def setUp(self):
    #def tearDown(self):
    def testCase1(self):
        print 'aaa1'  
    def testCase2(self):
        print 'bbb1'
        
if __name__ == "__main__":
    #此用法可以同时测试多个类
    suite1 = unittest.TestLoader().loadTestsFromTestCase(TestCase1) 
    suite2 = unittest.TestLoader().loadTestsFromTestCase(TestCase2) 
    suite = unittest.TestSuite([suite1, suite2]) 
    unittest.TextTestRunner(verbosity=2).run(suite)

La siguiente es una breve introducción a los miembros del módulo unittest aplicado en el script anterior para facilitar la comprensión del código anterior:

TestCase: La clase básica de todos los casos de prueba. Dado el nombre de un método de prueba, se devolverá una instancia de caso de prueba;

TestSuit: Organice instancias de casos de prueba, admita la adición y eliminación de casos de prueba y, finalmente, páselos a testRunner para la ejecución de la prueba;

TextTestRunner: un ejemplo de ejecución de caso de prueba, donde Texto significa mostrar los resultados de la prueba en forma de texto. El resultado de la prueba se guardará en la instancia de TextTestResult, incluida información sobre cuántos casos de prueba se ejecutaron, cuántos tuvieron éxito y cuántos fallaron;

TestLoader: se utiliza para cargar TestCase en TestSuite. Hay varios métodos loadTestsFrom __ (), que son para encontrar TestCase desde varios lugares, crear instancias de ellos, agregar a TestSuite y devolver una instancia de TestSuite

Consulte el enlace para comprender el diagrama de relaciones entre varias personas. https://blog.csdn.net/u012390519/article/details/54891586

El directorio del proyecto simple es el siguiente:

runAllTest.py es el siguiente:

# conding:utf-8
import unittest

test_dir = './test_case'  #用例目录
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py') #加载所有的测试类并返回测试套件discover

if __name__ == '__main__':
    runner = unittest.TextTestRunner()
    runner.run(discover)  #运行测试套件discover

De esta manera, todos los casos de prueba se pueden ejecutar automáticamente simplemente ejecutando el archivo runAllTest.py.

4. Utilice el archivo de configuración para cargar casos de prueba.

Primero cree un nuevo archivo e ingrese la ruta del caso de prueba allTestCase.txt

C:/Users/admin/Desktop/Auto/AutoTest/cases/t.py

Luego lea el archivo y cárguelo con testloader

def all_case():
    # discover = unittest.defaultTestLoader.discover(case_path, pattern="t.py", top_level_dir=None)
    # print("测试用例集合:"+str(discover))
    f2 = open(os.path.dirname(d) + "/AutoTest/conf/allTestCase.txt", "r")
    list=[]
    for line2 in f2:
        index = line2.rfind("/")
        indexPy = line2.rfind(".py")
        path = line2[0:index]
        name = line2[index + 1:indexPy + 3]
        print("文件列表" + path + ":" + name + ":" + str(index) + ":" + str(indexPy))
        suite1 = unittest.defaultTestLoader.discover(path, pattern=name, top_level_dir=None)
        list.append(suite1)
    suite = unittest.TestSuite(list)
    return suite

Otras operaciones son iguales a tres

Supongo que te gusta

Origin blog.csdn.net/xuefu_78/article/details/114276959
Recomendado
Clasificación