一、TestRunner 测试运行器 执行用例,输出测试结果

1、unittest提供生成测试报告的模块 TextTestRunner 生成文本格式测试报告
2、常见的第三方库结合unittest生产html格式测试报告
HtmlTestRunner
官网下载HtmlTestRunner.py只能支持python2版本,支持Python3,需要做修改
路径:python安装路径/Lib
HtmlTestRunner 的应用
BeatifulReport 的应用
企业测试报告的优化及定制 优化测试报告模板 通过js+html/html5
pytest+allure 生成更加美观的测试报告+优化定制(装饰器)

  1. import unittest
  2. from class08.testcase_01 import TestCase01
  3. import HTMLTestRunner
  4. import BeautifulReport
  5. from BeautifulReport import BeautifulReport
  6. # 加载用例
  7. testcases=unittest.TestLoader().loadTestsFromTestCase(TestCase01)
  8. # 执行用例,生产对应的测试报告TextTestRunner
  9. # with open('./reports/report.txt',"w+") as txtfile:
  10. #文件写入测试结果
  11. # unittest.TextTestRunner(stream=txtfile,verbosity=2).run(testcases)
  12. #HTMLTestRunner生成的测试报告
  13. # with open('./reports/report.html', "wb+") as htmlfile:
  14. # runner=HTMLTestRunner.HTMLTestRunner(stream=htmlfile,title="码尚教育测试报告",description="码尚教育测试用例详情")
  15. # runner.run(testcases)
  16. #BeautifulReport 生成的测试报告
  17. with open('./reports/report.html', "wb+") as htmlfile:
  18. BeautifulReport(testcases).report(description="码尚教育测试报告",filename="report_bf",report_dir="reports")

二、装饰器 @ unittest.skip 强制跳过&条件跳过

  1. class TestCase01(unittest.TestCase):
  2. @unittest.skip("此用例暂时不启用")
  3. def test_login(self):
  4. """
  5. 登录
  6. :return:
  7. """
  8. print("用例01")
  9. @unittest.skipIf(3>2,"条件为真,则跳过执行")
  10. def test_selectgoods(self):
  11. """
  12. 检索商品
  13. :return:
  14. """
  15. print("用例02")
  16. @unittest.skipUnless(2>3,"条件:2>3不成立,则跳过执行")
  17. def test_gointocart(self):
  18. """
  19. 加入购物车
  20. :return:
  21. """
  22. print("用例03")
  1. """
  2. @unittest.skip 强制跳过执行
  3. @unittest.skipIf 符合条件,则跳过执行
  4. @unittest.skipUnless 条件不成立,则跳过执行
  5. """
  6. import unittest
  7. @unittest.skipUnless(False,"整个模块下的用例强制跳过执行")
  8. class TestSkipModule(unittest.TestCase):
  9. def test_login(self):
  10. """
  11. 登录
  12. :return:
  13. """
  14. print("用例01")
  15. def test_selectgoods(self):
  16. """
  17. 检索商品
  18. :return:
  19. """
  20. print("用例02")
  21. def test_gointocart(self):
  22. """
  23. 加入购物车
  24. :return:
  25. """
  26. print("用例03")
  27. if __name__ == '__main__':
  28. unittest.main()

三、unittest的常用断言方法

  1. 常用断言方法
  2. 1assertIn(字符1,字符2) 字符1是否包含在字符2
  3. 2self.assertNotIn(字符1,字符2) 字符1不包含包含在字符2
  4. self.assertEqual(参数1,参数2,"断言失败的描述") 参数1等于参数2
  5. self.assertNotEqual(参数1,参数2,"断言失败的描述")参数不等于参数2
  6. self.assertTrue(True)
  7. self.assertFalse(False)
  1. from selenium import webdriver
  2. class TestCase01(unittest.TestCase):
  3. def setUp(self) ‐> None:
  4. # 打开chrome浏览器
  5. self.driver=webdriver.Chrome()
  6. def test_selectgoods(self):
  7. """
  8. 检索商品
  9. :return:
  10. """
  11. self.driver.get("http://47.107.116.139/shopnc/shop/")
  12. # 定位搜索输入
  13. el_select=self.driver.find_element(By.ID,"keyword")
  14. el_select.send_keys("手机")
  15. el_button=self.driver.find_element(By.ID,"button")
  16. el_button.click()
  17. time.sleep(2)
  18. #断言:验证测试结果与预期结果是否一致
  19. #获取商品列表的标题
  20. content=self.driver.find_element(By.XPATH,"//div[@class='goods‐name']/a").text
  21. print(content)
  22. #判断content是否包含手机字符?
  23. #常用断言方法
  24. """
  25. 常用断言方法
  26. 1、assertIn(字符1,字符2) 字符1是否包含在字符2
  27. 2、self.assertNotIn(字符1,字符2) 字符1不包含包含在字符2
  28. self.assertEqual(参数1,参数2,"断言失败的描述") 参数1等于参数2
  29. self.assertNotEqual(参数1,参数2,"断言失败的描述")参数不等于参数2
  30. self.assertTrue(True)
  31. self.assertFalse(False)
  32. """
  33. # 标题是否包含手机
  34. self.assertIn("手机2222",content,"断言失败的描述")
  35. #列表下有多少个商品 返回元素列表得到个数
  36. # count=els.count
  37. # self.assertEqual(count,1)

作业:

会员账号: admin msjy123
会员账号2: xingyao mashang
后台账号: admin msjy123
编辑 完成支付功能用例