1. 定义【测试类】 LoginCase
2. 定义【测试测试方法】 testAdd、testMultiply等
2.1 添加前置方法setUp(),例如所有的请求都用session管理,所有的用例都是基于登录后操作
def setUp(self): # 前置
self.url = "http://www.kuaidi.com/index-ajaxselectcourierinfo-1202247993797-yunda.html"
self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"} # get方法其它加个ser-Agent就可以了
self.s = requests.session()
2.2 添加后置方法tearDown(),例如做数据清理,只测新增草稿箱的功能
def tearDown(self):
# 后置处理,清理垃圾数据,不影响后续用例
pass
3. 做出【断言】 assertEqual(),一个用例中可以有多个检查点(断言)
class LoginCase(unittest.TestCase): #继承单元测试unittest.TestCase这个类
def testAdd(self): # 测试方法(用例)必须以test开头
self.assertEqual((1 + 2), 3)
self.assertEqual(0 + 1, 1)
def testMultiply(self): #测试方法(用例)必须以test开头
self.assertEqual((0 * 10), 0)
self.assertEqual((5 * 8), 40)
if __name__ == '__main__':
unittest.main()
4. 用例的执行顺序
4.1 按(assic码):0-9 ,A-Z, a-z顺序执行的(编写代码时,无需理会用例的代码行位置,用例是相互独立的,不要去依赖执行顺序)
4.2 Pycharm中,单独执行某一条用例,将鼠标放置在该用例名称后,右击运行
4.3 Pycharm中,要执行全部的用例,将鼠标放置在main函数后,右击运行
5. 执行次数
只执行一次前置,上面必须加@classmethod
class Test1(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("setUpClass初始化操作:用例开始前只执行一次")
@classmethod
def tearDownClass(cls):
print("tearDownClass收尾清理操作:用例结束时候只执行一次")
def setUp(self):
print("setUp每次用例开始前都会执行!!!")
def tearDown(self):
print("tearDown每次用例结构都会执行!!!")
def test_01(self):
time.sleep(1)
print("正在执行用例01")
def test_02(self):
time.sleep(1)
print("正在执行用例02")
if __name__ == "__main__":
unittest.main()
6. 项目结构

7. 加载目录
def all_case(case="testcase"):
'''加载指定目录下的所有的用例'''
# 待执行用例的目录
case_dir = os.getcwd()+"\\"+case
discover = unittest.defaultTestLoader.discover(case_dir,pattern="test*.py",top_level_dir=None)
print discover
return discover
if __name__ == "__main__":
# 返回实例
runner = unittest.TextTestRunner()
runner.run(all_case())
8. HTML 报告
8.1.下载HTMLTestRunner.py文件
8.2.放到python2\Lib文件目录
import unittest,HTMLTestRunner,os,time
def all_case(case="testcase"):
'''加载指定目录下的所有的用例'''
# 待执行用例的目录
case_dir = os.getcwd()+"\\"+case
discover = unittest.defaultTestLoader.discover(case_dir,pattern="test*.py",top_level_dir=None)
print discover
return discover
if __name__ == "__main__":
report_path = os.getcwd()+"\\report\\"+time.strftime("%Y_%m_%d_%H_%M_%S")+".html"
fp = open(report_path, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, verbosity=2, title=u'这是接口自动化测试报告',description=u'用例执行情况:')
runner.run(all_case())
fp.close()
网友评论