首页 > 其他分享 >UI自动化-03

UI自动化-03

时间:2023-03-27 21:13:42浏览次数:45  
标签:-% 03 self print 用例 UI 自动化 test def

import unittest

'''
1.使用什么定位方法:
一般使用id,name,class,比较方便点,如果标签中这些属性都没有,就会使用xpath和css,有时候针对一些文本也会使用link_text
2.定位不到元素,是什么原因?
   1.所有定位的元素在一个新窗口页面上,需要switch_to.window方法通过句柄进行窗口切换
   2.网络,计算硬件或者页面元素较多加载缓慢,代码定位元素在元素加载之前导致定位元素失败,代码中定位元素之前添加等待时间
   3.定位的元素在iframe框中,导致元素定位失败,使用switch_to.frame切换到iframe框在进行定位
   4.定位元素不在当前页面可见范围,导致定位失败,将页面最大化或者拖动滚动条到能显示元素的位置
3.单元测试框架
自动化使用是什么框架?自动化用例用的什么管理工具
单元测试框架:unittest,pytest
单元测试框架作用:
    组织和执行测试用例
    提供了丰富的断言方法
    生成测试报告,结合第三方生成html格式的测试报告
单元测试框架的核心内容:
1.TestCase:继承TestCase,将实例方法变成测试用例,用例必须要使用test开头,执行用例顺序是按照ASCII
2.FixTure:测试固件,用于测试前的准备工作和测试后清理工作
    setup:为测试之前提供准备工作,比如测试之前打开浏览器,每条用例执行前都会执行一次
    teardown:为测试结束提供清理工作,比如管理浏览器,每条用例执行前都会执行一次
    setupclass:测试前提供准备工作,所有用例执行前只会执行一次
    teardownclass:为测试结束提供清理工作,比如管理浏览器,所有用例只会执行一次
3.testsuite:测试套件,把需要执行的测试用例加载到测试套件中,形成测试用例集
4.testrunner:用例执行器,执行套件中的测试用例
5.report:结合第三方模块HTMLTestRunner,生成丰富的html格式的测试报告
'''
import unittest
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
import HTMLTestRunner3_New
class Dcs(unittest.TestCase):
    @classmethod
    def setUp(self) -> None:
        print('用例的开始')
    @classmethod
    def tearDown(self) -> None:
        print('用例结束')
    @classmethod
    def setUpClass(cls) -> None:
        print('用例开始')
    @classmethod
    def tearDownClass(cls) -> None:
        print('用例结束')
    def test_01(self):
        print('1111')
    def test_a(self):
        print('2222')
    def test_02(self):
        print('3333')
    def test_A(self):
        print('4444')
    def test(self):
        print('0000')
    def func1(self):             #不是以test开头不会被执行
        print('5555')
    def login(self):            #不是以test开头不会被执行
        print('=====')
if __name__ == '__main__':
    #第一种执行方法:通过main()函数,执行unittest中所有用例
    unittest.main()
    #执行用例第二种方法:通过添加用例到suite套件中
    suite=unittest.TestSuite()                       #实例化一个套件对象
    # suite.addTest(Dcs("test_01"))               # 添加单条用例到套件中
    suite.addTests([Dcs('test_01'),Dcs('test_02'),Dcs('test_a')])       #以列表的形式添加多条用例
    runner=unittest.TextTestRunner()           #实例化一个执行器对象
    runner.run(suite)                         #通过调用run方法执行套件中的测试用例

    #执行用例第三种方法,通过discover加载指定路径的测试用例+自动运行+生成报告
    path1='D:\python\dcs31\duoceshi31_UI'
    stime1=time.strftime('%Y-%m-%d-%H-%M-%S')     #获取系统时间,避免相同文件内容被覆盖
    print(stime1)
    file_path=path1+"\\%s_ui_report.html"%stime1         #通过open函数自动生成html文件,open在写内容时,如果文件不存在会自动生成
    with open(file_path,'wb') as f :                #wb以二进制方式写入内容
        discover=unittest.TestLoader().discover(path1,pattern='lesson3.py')   # discover方法会自动搜索特定路径下以.py结尾的文件模块中以test开头的用例
        runner=HTMLTestRunner3_New.HTMLTestRunner(stream=f,
                                                  description='UI自动化测试执行情况如下',
                                                  title='CMS平台UI自动化测试',
                                                  tester='小程')
        runner.run(discover)

class   Cms(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        cls.driver=webdriver.Chrome()
        cls.driver.get('http://cms.duoceshi.cn/cms/manage/login.do')
        cls.driver.maximize_window()
        cls.driver.implicitly_wait(5)

    @classmethod
    def tearDownClass(cls) -> None:
        time.sleep(3)
        cls.driver.close()
    def test01(self):
        self.driver.find_element(By.ID,'userAccount').send_keys('admin')
        self.driver.find_element(By.ID,'loginPwd').send_keys('123456')
        self.driver.find_element(By.ID,'loginBtn').click()
        result=self.driver.find_element(By.XPATH,'/html/body/div/aside/div/dl[1]/dt').text    #获取用户中心文本
        self.assertEqual(result,'用户中心')                        #用于判断断言登录是否成功
if __name__ == '__main__':
    path1 = 'D:\python\dcs31\duoceshi31_UI'
    stime1=time.strftime('%Y-%m-%d-%H-%M-%S')     #获取系统时间,避免相同文件内容被覆盖
    print(stime1)
    file_path=path1+"\\%s_ui_report.html"%stime1         #通过open函数自动生成html文件,open在写内容时,如果文件不存在会自动生成
    with open(file_path,'wb') as f :                #wb以二进制方式写入内容
        discover=unittest.TestLoader().discover(path1,pattern='lesson3.py')   # discover方法会自动搜索特定路径下以.py结尾的文件模块中以test开头的用例
        runner=HTMLTestRunner3_New.HTMLTestRunner(stream=f,
                                                  description='UI自动化测试执行情况如下',
                                                  title='CMS平台UI自动化测试',
                                                  tester='小程')
        runner.run(discover)

 

标签:-%,03,self,print,用例,UI,自动化,test,def
From: https://www.cnblogs.com/jjm414/p/17262855.html

相关文章