zoukankan      html  css  js  c++  java
  • python UI自动化实战记录七:页面2用例编写

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

    1 引入接口类和页面类

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

    3 tearDown函数中关闭页面

    4 test打头的函数都是用例。因页面和接口的相关方法都已封装好,所以用例会比较简洁。

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

    # coding:utf-8
    """
    页面2的测试用例
    """
    
    from apiclass.api_fund import Fund
    from pageclass.strategy import StrategyPage
    from common.launch_browser import launch_browser
    import unittest
    from ddt import ddt,data,unpack
    
    @ddt
    class StrategyPageTest(unittest.TestCase):
    
        @classmethod
        def setUpClass(cls):
            sso = "sso串"
            driver = launch_browser("chrome")
            cls.page = StrategyPage(driver)
            cls.page.open_strategy_page(sso)  # 创建页面对象
            cls.fund = Fund()  # 创建接口对象
    
        @classmethod
        def tearDownClass(cls):
            cls.page.closepage() #关闭浏览器
    
        """用例"""
        def test01_nav(self): #净值数据对比
            self.compare_nav()
    
        def test02_trends_default(self): #组合走势默认值验证
            self.compare_trend_default()
    
        def test03_trends(self):  # 组合走势业绩表现
            self.compare_trends()
    
        def test04_percents(self): # 组合涨幅数据对比
            self.compare_percents()
    
        def test05_settings_default(self): # 验证策略配置默认数据
            self.compare_settings()
    
        def test06_settings(self): #策略配置数据对比
            self.compare_settings_alldays()
    
        style_level = [(styleindex,levelindex) for styleindex in range(5) for levelindex in range(3)]
        @data(*style_level)
        @unpack
        def test07_checkallstyles(self,styleindex,levelindex): #全量验证-选择不同的策略,验证数据正确性
            self.page.choose_strategy(styleindex,levelindex) #选择策略
            self.assertTrue(self.page.check_chooseresult(),"所选类型与页面显示类型不一致")
            # 验证所选策略所有的值
            self.compare_nav()
            self.compare_trend_default()
            self.compare_trends()
            self.compare_percents()
            self.compare_settings()
            self.compare_settings_alldays()
    
        """接口与页面数据比较"""
        def compare_nav(self):
            """净值数据对比"""
            code = self.page.get_code()
            self.page.get_navinfo() # 页面数据
            self.fund.get_fund_latestinfo(code)  # 获取接口数据
            self.assertEqual(self.page.navlist, self.fund.navlist, code+"接口和页面的净值不一致")
    
        def compare_trend_default(self):
            """组合走势默认值验证"""
            code = self.page.get_code()
            pattern = self.page.get_actived_pattern()
            peroid = self.page.get_actived_peroid()
            expect_result = self.fund.get_fund_trends(code, pattern, peroid)  # 获取组合走势接口数据
            actual_result = self.page.get_trends()  # 获取页面数据
            self.assertEqual(expect_result, actual_result, code+"组合走势开始时间,业务表现数据不一致")
    
        def compare_trends(self):
            """组合走势业绩表现"""
            code = self.page.get_code()
            for patternindex in range(2): #两种定投方式
                self.page.choose_trends_pattern(patternindex) #点击定投列表获取时间区间
                for peroidindex in range(len(self.page.peroidlist)):
                    with self.subTest("choose_peroid_%s"%(peroidindex+1)):
                        self.page.choose_trends_peroid(peroidindex) #点击时间区间
                        expect_result = self.fund.get_fund_trends(code, self.page.pattern, self.page.peroid) # 获取组合走势接口数据
                        actual_result = self.page.get_trends()  # 获取页面数据
                        self.assertEqual(expect_result, actual_result, "组合走势数据不一致%s_%s_%s"%(code,self.page.peroid,self.page.pattern))
    
        def compare_percents(self):
            """组合涨幅数据对比"""
            code = self.page.get_code()  # 获取策略信息
            self.fund.get_fund_latestinfo(code)  # 获取接口数据
            self.page.get_percents()  # 获取页面组合涨幅数据
            self.assertEqual(self.page.percents_list, self.fund.percents_list, code+"组合涨幅数据对比不一致")
    
        def compare_settings(self):
            """验证策略配置默认数据"""
            code = self.page.get_code()
            day = self.page.get_strategy_adjustdate().replace("-", '')  # 当前跳转日期
            self.page.get_strategy_settings()  # 获取页面策略配置数据
            self.fund.get_fund_strategy(self.page.strategycode, day)  # 获取接口数据
            self.assertEqual(self.page.memo, self.fund.memo.replace("
    ", " "), code+"策略分析不一致")
            self.assertEqual(self.page.samples, self.fund.samples, code+"策略配置不一致")
    
        def compare_settings_alldays(self):
            """策略配置数据对比"""
            self.page.get_strategy_adjustdate()  # 获取页面策略调仓日期
            for adjustdate in self.page.adjustDatelist:
                with self.subTest("adjustdate_%s" % adjustdate):
                    self.page.choose_adjustdate(adjustdate)  # 选择日期并获取配置
                    self.compare_settings()
    
    if __name__ == '__main__':
        unittest.main()

    the end!

  • 相关阅读:
    6. Flask请求和响应
    5. Flask模板
    FW:Software Testing
    What is the difference between modified duration, effective duration and duration?
    How to push master to QA branch in GIT
    FTPS Firewall
    Query performance optimization of Vertica
    (Forward)5 Public Speaking Tips That'll Prepare You for Any Interview
    (转)The remote certificate is invalid according to the validation procedure
    Change
  • 原文地址:https://www.cnblogs.com/dinghanhua/p/10263379.html
Copyright © 2011-2022 走看看