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': ''}
上海市 本人-已签收,感谢您选择申通快递,期待再次为您服务。