单元测试unittest的用法

本文主要阐述了unittest 中的 TestSuite容器、assert断言、装饰器@unittest.skip的用法

port.py

import requests
import json
class RunMain:
    def __init__(self):
        #self.run_main(url,method,data=None)
        pass

    def send_get(self,url,data=None):
        print(data)
        res = requests.get(url=url,data=data).text
        print('res=%s'%res,type(res))
        return res

    def send_post(self,url,data=None):
        res = requests.post(url=url,data=data).text
        res = json.loads(res)
        #上面两句可以合并为一句 res = requests.post(url=url, data=data).json()
        # return json.dumps(res, indent=2, sort_keys=True)  #字典转字符串序列化可以这么写
        return res

    def run_main(self,url,method,data=None):
        if method == 'GET':
            res = self.send_get(url,data)
        else:
            res = self.send_post(url,data)
        return res


if __name__ == '__main__':

    url = 'http://127.0.0.1:8001/login/'
    data = {
        'username':'jonathantfff',
        'password':'jack666666',
    }

    rm = RunMain().run_main(url,'POST',data=data)
    

testcase.py

import unittest
class TestMethod(unittest.TestCase):
    #每次方法之前执行,名字必须叫"setUpClass"
    @classmethod
    def setUpClass(cls):
        print("类执行之前的方法")
    #每次方法之前执行,名字必须叫"tearDownClass"
    @classmethod
    def tearDownClass(cls):
        print("类执行之后的方法")
    #每次方法之前执行,名字必须叫"tearDownClass"
    def setUp(self):
        print('setup ')
    #每次方法之后执行,名字必须叫"tearDown"
    def tearDown(self):
        print('teardown ')
    #测试方法必须以"test"开头
    def test_01(self):
        print('this i test1')

    def test_02(self):
        print('this i test2')


if __name__ == '__main__':
    unittest.main()

以上代码为上面两片文章的独立代码,下面我们整合一下。**重要

import unittest
import port
class TestMethod(unittest.TestCase):

    def setUp(self):
        self.url = 'http://127.0.0.1:8001/login/'
   		self.data = {
        'username':'jonathantfff',
        'password':'jack666666',
    				}
	    self.run = Runmain()

    def tearDown(self):
        print('teardown ')

    def test_01(self):
    	res = self.run.run_main(self.url,self.data)
        self.assertEqual(res['code']=101)  #断言,断言成功则跳过,否则报错
        globals()['code'] =  res['code']  # globals()['code']定义全局变量(固定用法),这个全局变量可以给下一个测试的函数使用(集成测试)

    def test_02(self):
        print(code)  #直接使用变量就可以返回定义的全局变量【使用的时候尽量减少依赖执行,unittest执行的时候是按照test后面的字母顺序执行的】

	#通过这种方式跳过 "test_03"这个测试
	@unittest.skip('test_03')
	def test_03(self):
		print('这是测试的第三个case')

if __name__ == '__main__':
    #unittest.main() 
    #那么除了 "unittest"还有什么方法可以启动呢,unittest为我们提供了一个容器
    suite = unittest.TestSuite()  #创建容易
    suite = addTest(TestMethod('test_01')) #向容器内添加测试
    suite = addTest(TestMethod('test_02')) 
    suite = addTest(TestMethod('test_03')) 
    unittest.TextTestRunner().run(suite)  #启动容器
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值