• 如何才能让用例自动运行完之后,生成一张直观可看易懂的测试报告呢?


    小编使用的是unittest的一个扩展HTMLTestRunner

    • 环境准备

    使用之前,我们需要下载HTMLTestRunner.py文件

    点击HTMLTestRunner后进入的是一个写满代码的网页,小编推荐操作:右键 --> 另存为,文件名称千万不要改

    python3使用上述HTMLTestRunner可能会报错,可以替换如下文件

     HTMLTestRunner

    使用
    接下来,小编将以登录网易邮箱为例,生成一份最基础的测试报告。小伙伴们copy走代码验证时一定记得修改账号密码哦。

    目录结构如下:

    将HTMLTestRunner.py文件存放到package包下,将test_login.py存放到testcase目录下,用于编写测试用例,建立testreport包,用于存放测试报告,在email目录下建立run_test.py,用于执行测试

    HTMLTestRunner的使用方法在代码注释中介绍和解释【test_login.py】

    1. from selenium import webdriver
    2. import unittest,time
    3. class Login(unittest.TestCase):
    4. def setUp(self):
    5. #打开百度,搜索“163网易邮箱”,登录
    6. driver=webdriver.Firefox()
    7. driver.implicitly_wait(5)
    8. self.driver=driver
    9. driver.get("https://www.baidu.com/")
    10. driver.find_element_by_id("kw").send_keys("163邮箱登录")
    11. driver.find_element_by_id("su").click()
    12. name = driver.find_element_by_id("op_email3_username")
    13. password = driver.find_element_by_class_name("op_email3_password")
    14. login = driver.find_element_by_css_selector(".c-btn")
    15. #如下操作可以使setUp中的变量被其他模块调用
    16. self.name=name
    17. self.password=password
    18. self.login=login
    19. def tearDown(self):
    20. self.driver.quit()
    21. def switch_window(self):
    22. #切换窗口
    23. for handle in self.driver.window_handles:
    24. self.driver.switch_to.window(handle)
    25. #j增加等待时间,可以提高测试用例执行的健壮性
    26. time.sleep(2)
    27. time.sleep(3)
    28. #成功登录
    29. def test_right_login(self):
    30. #账号密码自行填写
    31. self.name.send_keys("xxx")
    32. self.password.send_keys("xxx")
    33. self.login.click()
    34. self.switch_window()
    35. #t通过新窗口的title验证用例是否通过
    36. self.assertEqual(self.driver.title,"网易邮箱6.0版","登录失败")
    37. #密码为空登录
    38. def test_null_psw_login(self):
    39. self.name.send_keys("xxx")
    40. time.sleep(3)
    41. self.login.click()
    42. self.switch_window()
    43. # t通过新窗口的title验证用例是否通过
    44. self.assertEqual(self.driver.title,"网易帐号中心 > 用户验证","未跳转至用户验证界面")

    【run_test.py】

    1. #导入HTMLTestRunner的包
    2. from package import HTMLTestRunner
    3. #导入test_login的包,执行测试用例时需使用
    4. from testcase.test_login import *
    5. #定义要执行的测试用例的路径
    6. test_dir = './testcase'
    7. #定义要执行的测试用例的路径和名称格式
    8. #test_*.py的意思是,./testcase路径下文件名称格式为test_*.py的文件,*为任意匹配,路径下有多少的test_*.py格式的文件,就依次执行几个
    9. discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
    10. #定义测试报告的名称和存储位置
    11. filename = './testreport/loginReport.html'
    12. #开始执行
    13. if __name__ == '__main__':
    14. suit=unittest.TestSuite()
    15. suit.addTest(Login("test_right_login"))
    16. suit.addTest(Login("test_null_psw_login"))
    17. #以wb(可写的二进制文件)形式,打开文件,若文件不存在,则先执行创建,再执行打开
    18. fp = open(filename, 'wb')
    19. #调用HTMLTestRunner生成报告
    20. runner = HTMLTestRunner.HTMLTestRunner(
    21. # 指定测试报告的文件
    22. stream=fp,
    23. # 测试报告的标题
    24. title=u"登录网易邮箱测试报告",
    25. # 测试报告的副标题
    26. description=u'用例执行情况(win7 64位)'
    27. )
    28. #执行用例
    29. runner.run(discover)
    • 报告展示

     最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

    文档获取方式:

    这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

    以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

  • 相关阅读:
    腾讯云服务器初始化
    考研算法47天:01背包
    论文阅读 GloDyNE Global Topology Preserving Dynamic Network Embedding
    跬智信息 (Kyligence) 荣获信创“大比武”重要奖项,坚持做大做实国产软件
    java基于springboot+vue的旅游心得分享攻略系统 elementui
    Django基础二静态文件和ORM
    SpringBoot 还用 if 校验参数?老司机都是这么玩的!
    在张朝阳的直播间里,没有搜狐的未来
    【面试题】JS使用parseInt()、正则截取字符串中数字
    高等数学(第七版)同济大学 习题5-1 个人解答
  • 原文地址:https://blog.csdn.net/2301_77645750/article/details/132903399