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)
源碼除了這部分內容為,還用到了高階函數的方式。