接口自动化框架

httprunner其中一个比较好的点就是利用type动态创建类,使用setattr动态增加方法和属性。

将维护的用例进行转变为继承unittest.Textcase的类,很好的与unittest结合起来

以下为简单的例子

正常的写法:

import  unittest

class TestMyFunc(unittest.TestCase):

def test_is_prime(self):
print('is_prime')

def test_add(self):
print('add')

def test_api_http(self):
print('api_http')

if __name__ == '__main__':
test_suit = unittest.TestSuite()
suit1 = unittest.TestLoader().loadTestsFromTestCase(TestMyFunc)
test_suit.addTest(suit1)
test_runner = unittest.TextTestRunner()
test_runner.run(test_suit)

动态的写法:

#-*-coding:utf-8-*-
import requests
def is_prime(self):
number = 1

def add(self):
return 1+2

def api_http(self):
contnet = requests.get(url='https://www.baidu.com')
print(contnet)
import unittest

if __name__ == '__main__':

TestMyFunc = type('TestMyFunc',(unittest.TestCase,),{})
setattr(TestMyFunc,'test_is_prime',is_prime)
setattr(TestMyFunc,'test_add',add)
setattr(TestMyFunc,'test_api_http',api_http)

test_suit = unittest.TestSuite()
suit1 = unittest.TestLoader().loadTestsFromTestCase(TestMyFunc)
test_suit.addTest(suit1)
test_runner = unittest.TextTestRunner()
test_runner.run(test_suit)

源码除了这部分内容为,还用到了高阶函数的方式。

原文地址:https://www.cnblogs.com/yingchen/p/11812224.html