• python UI自动化实战记录六:页面1用例编写


    使用python自带的unittest测试框架,用例继承自unittest.TestCase类。

    1 引入接口类和页面类

    2 setUp函数中打开页面,定义接口对象

    3 tearDown函数中关闭页面

    4 test打头的函数都是用例,预期结果和实际结果对比使用unittest自带的断言。因页面和接口的相关方法都已封装好,所以用例会比较简洁。

    5 当一个用例需根据参数不同执行多次时,可使用ddt数据驱动,或unittest自带的subTest。

    6 注意test05_click_btn()。 点击页面1的按钮之后会跳转到页面2,需创建页面2的对象。

    # coding:utf-8
    """
    首页相关用例
    """
    
    from apiclass.api_fund import Fund
    from pageclass.index import IndexPage
    from pageclass.strategy import StrategyPage
    from common.launch_browser import launch_browser
    import unittest
    from ddt import ddt,data
    
    @ddt
    class IndexPageTest(unittest.TestCase):
    
        @classmethod
        def setUpClass(cls):
            sso = "sso串"
            driver = launch_browser('chrome') # 启动浏览器
            cls.page = IndexPage(driver) # 实例化首页页面对象
            cls.page.open_index_page(sso) # 打开首页
            cls.fund = Fund() # 接口对象
    
    
        @classmethod
        def tearDownClass(cls):
            cls.page.closepage()
    
        def test01_check_mystyle(self):
            """验证首页风险等级与tips里的一致"""
            result = self.page.check_mystyle()
            self.assertTrue(result,"页面风险等级与tips里的不一致")
    
        def test02_default_style(self):
            """验证页面默认策略与用户风险等级一致"""
            result = self.page.check_default_ismystyle()
            self.assertTrue(result,"页面默认策略与用户风险等级不一致")
    
        def test03_default_data(self):
            """验证默认策略的数据正确性"""
            self.check_levels_data()
    
        @data(*range(5))
        def test04_choose_style(self,styleindex):
            """验证各策略风格的数据正确性"""
            with self.subTest('choose_style_%s'%styleindex): #创建测试子项,一次循环fail会继续执行下一次循环
                self.page.choose_style(styleindex) #选择style
                self.assertTrue(self.page.check_SelectEqCurrent(),"所选风格与显示的风格不一致")
                self.check_levels_data()
    
        def test05_click_btn(self):
            """验证点击查看策略按钮,跳转页面风格与所点击风格一致"""
            driver,data_code_index = self.page.clicklink_read_strategy() # 返回的是策略页面和code
            newpage= StrategyPage(driver) # 点击之后成了策略页面对象
            newpage.get_strategyinfo()#  验证策略页面的类型与点击的一致
            self.assertEqual(data_code_index,newpage.strategycode,"点击的策略与跳转后的策略code不一致")
    
        def check_levels_data(self):
            """比较各level数据与接口数据是否一致"""
            for levelindex in range(3):  # 验证右侧三个level数据正确性
                with self.subTest(('check_level_data:level%s') % (levelindex + 1)):
                    self.page.get_level_info(levelindex)  # 循环获取右侧的信息
    
                    self.fund.get_fund_strategy(self.page.data_code, latest=-1)  # 获取接口策略信息
                    self.fund.get_fund_percentM3(self.page.data_code)  # 获取3个月收益率
    
                    actual_result = [self.page.data_code, self.page.percentM3, self.page.name,
                                     self.page.description]  # 实际结果
                    expect_result = [self.fund.code, self.fund.percentM3, self.fund.name, self.fund.summary]  # 预期结果
                    self.assertEqual(actual_result, expect_result, "首页数据和接口数据不一致")
    
    
    if __name__ == '__main__':
        unittest.main()

    the end!

  • 相关阅读:
    最新macOS 11.4+Xcode 12.5+iOS 14.6 编译安装WebDriverAgent填坑记
    python +pytest +yaml + Allure 实现接口自动化框架
    DNS原理及其解析过程
    jmeter性能测试--ramp_up和同步定时器的区别
    jmeter常用定时器
    基本sql语句
    MySQL连表查询
    MySQL约束条件
    MySQL单表查询
    linux 查看文件的前几行 或者 某些行
  • 原文地址:https://www.cnblogs.com/dinghanhua/p/10263378.html
Copyright © 2020-2023  润新知