Python学习——unittest框架

unittest之于Python相当于junit之于java

import unittest

class defityArithmeticTest(unittest.TestCase):  #defityArithmeticTest这个类继承unittest.TestCase这个父类
 def setUp(self): #setUp前置条件
        pass

 def tearDown(self): #tearDown后置条件
        pass
def testMuti(self): #unittest的用例必须以test*开头 hope=9-3 result=6 self.assertEqual(hope,result) #这是一个断言 def testChu(self): hope=9/5 result=4 self.assertEqual(hope,result)if __name__=="__main__": #调用主函数 unittest.main()

unittest执行顺序:

import unittest
import time
class Test(unittest.TestCase):
    def setUp(self):
        print("start!")
    def tearDown(self):
        time.sleep(1)
        print("end!")
    def test01(self):
        print("执行用例01")
    def test03(self):
        print("执行用例03")
    def test02(self):
        print("执行用例02")
    def testadd(self):
        print("add方法")
    def addtest(self):
        print("测试add开头的测试用例")
if __name__=="__main__":
    if __name__ == '__main__':
        unittest.main()

执行结果:

start!
执行用例01
end!
start!
执行用例02
end!
start!
执行用例03
end!
start!
add方法

end!

总结:

1、先执行upset,再执行用例(test*),最后执行teardown

2、用例的执行顺序是根据用例的名称01-02-03,而没有以test开头的addtest没有被执行

unitest断言:

assertEqual——判断两个参数是否相等

assertNotEqual——判断两个参数不相等

assertIn——判断字符串是否包含

assertNotIn——判断字符串是否不包含

assertTrue——判断是否为真

assertFalse——判断是否为假

assertIsNone——判断是否为None

assertIsNotNone——判断是否不为None

一个例子:

在www.kuaidi100.com网站查询快递

1、用fiddler抓取报文


2、写脚本 

import unittest
import requests
class Test_kuaidi100(unittest.TestCase):
    def setUp(self):
        #把header定义成一个dict类型
        self.headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36"}
    def test_shentong(self):
        danhao="3355522248049"
        kd="shentong"
        #tempnum="0.7732537265270825"
        #http://www.kuaidi100.com/query?type=shentong&postid=3355522248049&temp=0.7732537265270825
        self.url="http://www.kuaidi100.com/query?type=%s&postid=%s"%(kd,danhao)   #把快递类型和单号进行参数化,省略了temp参数
        print(self.url)
        r=requests.get(self.url,headers=self.headers,verify=False)
        result=r.json()

        print(result['com']) #获取com的内容
        data=result["data"] #获取data里面的内容
        print(data[0])
        get_result=data[0]["context"] #获取context这个键的值
        print(get_result)
        self.assertEqual("shentong",result['com'])
        self.assertIn("已签收",get_result)
    if __name__=="__main__":
        unittest.main()
执行结果:
Ran 1 test in 0.166s


OK
shentong
{'time': '2018-03-22 20:43:01', 'ftime': '2018-03-22 20:43:01', 'context': '上海市 本人-已签收,感谢您选择申通快递,期待再次为您服务。', 'location': ''}

上海市 本人-已签收,感谢您选择申通快递,期待再次为您服务。


猜你喜欢

转载自blog.csdn.net/weixin_39430584/article/details/80095280
今日推荐