zoukankan      html  css  js  c++  java
  • 008 selenium html报告

    '''
    时间:2018/12/06
    功能:html报告
    目录:
        一: 工程结构
        二: 测试报告 - 一般 
        三: 测试报告 - HTMLTestRunner
    '''

    一: 工程结构

    1 :  一级目录 : 工程名称 - web_auto_test

    2 :  二级目录 : 测试用例 - case

    3 :  二级目录 : 公共模块 - common

    4 :  二级目录 : 测试报告 - report

    5 :  二级文件 : 运行文件 - run_all.py

    # coding:utf-8
    import unittest
    
    class IntegerArithmeticTestCase(unittest.TestCase):
        def testAdd(self):  # test method names begin with 'test'
            self.assertEqual((1 + 2), 3)
            self.assertEqual(0 + 1, 1)
        def testMultiply(self):
            self.assertEqual((0 * 10), 0)
            self.assertEqual((5 * 8), 40)
    
    if __name__ == '__main__':
        unittest.main()

    1 :  test001_case_count.py

    # coding:utf-8
    from selenium import webdriver
    import time
    import unittest
    
    class LoginTest(unittest.TestCase):
        '''登录类的案例'''
        @classmethod
        def setUpClass(cls):
            cls.driver = webdriver.Firefox()
    
        @classmethod
        def tearDownClass(cls):
            cls.driver.quit()   # 编辑器问题
    
        def setUp(self):
            self.driver.get("http://127.0.0.1/zentao/user-login-L3plbnRhby8=.html")
    
        def tearDown(self):
            self.is_alert_exist()
            self.driver.delete_all_cookies() # 退出登录
            self.driver.refresh()
    
        def get_login_username(self):
            try:
                t = self.driver.find_element_by_css_selector("#userMenu>a").text
                print(t)
                return t
            except:
                return ""
    
        def is_alert_exist(self):
            '''判断alert是不是在'''
            try:
                time.sleep(2)
                alert = self.driver.switch_to.alert
                text = alert.text
                alert.accept() # 用alert 点alert
                return text
            except:
                return ""
    
        def test_01(self):
            '''登录成功的案例'''
            time.sleep(2)
            self.driver.find_element_by_id("account").send_keys("admin")
            self.driver.find_element_by_name("password").send_keys("123456")
            self.driver.find_element_by_id("submit").click()
            # 判断是否登陆成功
            time.sleep(3)
            t = self.get_login_username()
            print("获取的结果:%s"%t)
            self.assertTrue("admin" == t)
    
        def test_02(self):
            '''登录失败的案例'''
            time.sleep(2)
            # 错误账号和密码
            self.driver.find_element_by_id("account").send_keys("admin1112")
            self.driver.find_element_by_name("password").send_keys("")
            self.driver.find_element_by_id("submit").click()
            # 判断是否登陆成功
            time.sleep(3)
            t = self.get_login_username()
            print("登录失败,获取结果:%s"%t)
            # self.assertTrue("" == t)
            self.assertTrue(False == True)  # 断言失败截图
    
    if __name__ == "__main__":
        unittest.main()

    1 :  test002_case_login_chandao.py

    二: 测试报告 - 普通 

    # coding:utf-8
    import unittest
    import os
    
    
    # 路径兼容 - windows/mac
    cur_path = os.path.dirname(os.path.realpath(__file__))  # 获取路径 - 当前脚本
    cur_path = os.path.join(cur_path, "case")           # 拼接路径
    
    # 显示结果 - unnitest
    pattern = "test*.py"    # 匹配文件
    discover = unittest.defaultTestLoader.discover(start_dir = cur_path, pattern = pattern)
    print(discover)
    
    runner = unittest.TextTestRunner()
    runner.run(discover)
    D:ProgramToolsPythonpython.exe "D:/ProgramTools/PyCharm 5.0.4/PycharmProject/web_auto_test/run_all.py"
    ..<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test001_case_count.IntegerArithmeticTestCase testMethod=testAdd>, <test001_case_count.IntegerArithmeticTestCase testMethod=testMultiply>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test002_case_login_chandao.LoginTest testMethod=test_01>, <test002_case_login_chandao.LoginTest testMethod=test_02>]>]>]>
    admin
    获取的结果:admin
    .登录失败,获取结果:
    F
    ======================================================================
    FAIL: test_02 (test002_case_login_chandao.LoginTest)
    登录失败的案例
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "D:ProgramToolsPyCharm 5.0.4PycharmProjectweb_auto_testcase	est002_case_login_chandao.py", line 67, in test_02
        self.assertTrue(False == True)  # 断言失败截图
    AssertionError: False is not true
    
    ----------------------------------------------------------------------
    Ran 4 tests in 24.103s
    
    FAILED (failures=1)
    
    Process finished with exit code 0


    三: 测试报告 - HTMLTestRunner

    # coding:utf-8
    import unittest
    import os
    from common import HTMLTestRunner_cn
    
    
    # 路径兼容 - windows/mac
    cur_path = os.path.dirname(os.path.realpath(__file__))  # 获取路径 - 当前脚本
    cur_path = os.path.join(cur_path, "case")           # 拼接路径
    
    # 显示结果 - unnitest
    pattern = "test*.py"    # 匹配文件
    discover = unittest.defaultTestLoader.discover(start_dir = cur_path, pattern = pattern)
    print(discover)
    
    
    # 路径兼容 - windows/mac
    cur_path = os.path.dirname(os.path.realpath(__file__))  # 获取路径 - 当前脚本
    report_path = os.path.join(cur_path, "report", "report.html")
    
    # 显示结果 - HTMLTestRunner
    fp = open(report_path, "wb")
    runner = HTMLTestRunner_cn.HTMLTestRunner(stream = fp,                      # 报告路径
                                              title = "接口测试用例报告",       # 报告标题
                                              description = "测试用例详情报告", # 报告描述
                                              retry = 1,                        # 错误重写执行
                                              verbosity = 2)                    # 注释显示
    runner.run(discover)
    fp.close()

    1 :  run_all.py

    1 :  全部运行通过的测试报告

    1 :  运行失败的测试报告

  • 相关阅读:
    css居中问题(转)
    Request.ServerVariables 各个参数的用法
    html5 画个球碰撞
    递归生成json
    AspNetPager分页结合存储过程的用法
    sql+aspnetpager+查询功能
    求1+2+……+n
    几种排序的比较 bitmapsort,qsort,set
    利用两个栈,反转其中一个栈的元素
    进程间通信(IPC, Inter Process Communication)读书笔记
  • 原文地址:https://www.cnblogs.com/huafan/p/10079543.html
Copyright © 2011-2022 走看看