使用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("\n", " "), 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!

python UI自动化实战记录七:页面2用例编写的更多相关文章

  1. python UI自动化实战记录五:测试页面2 pageobject

    该部分记录测试页面2-StrategyPage,所有页面2上的元素定位.操作.获取属性等方法都写在该类中. 1 页面2继承自BasePage: 2 页面2第一部分写的是所有的定位器 3 页面2第二部分 ...

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

    使用python自带的unittest测试框架,用例继承自unittest.TestCase类. 1 引入接口类和页面类 2 setUp函数中打开页面,定义接口对象 3 tearDown函数中关闭页面 ...

  3. python UI自动化实战记录四:测试页面1-pageobject

    该部分记录测试页面1-IndexPage,所有首页上的元素定位.操作.获取属性等方法都写在该类中. 1 首页类继承自BasePage 2 首页类第一部分写的是所有的定位器 3 首页类第二部分类的方法, ...

  4. python UI自动化实战记录十:执行测试及测试报告

    使用简单的unittest.TextTestRunner. 思路: 1 在report目录下创建当日测试报告目录 20190113 2 创建测试报告文件 f = 时间戳.txt 3 加载测试集,运行测 ...

  5. python UI自动化实战记录二:请求接口数据并提取数据

    该部分记录如何获取预期结果-接口响应数据,分成两步: 1 获取数据源接口数据 2 提取后续页面对比中要用到的数据 并且为了便于后续调用,将接口相关的都封装到ProjectApi类中. 新建python ...

  6. python UI自动化实战记录三:pageobject-基类

    脚本思路: 使用pageobject模式,写一个basepage基类,所有页面的通用方法封装到基类中.比如打开页面,关闭页面,等待时间,鼠标移到元素上,获取单个元素,获取一组元素,获取元素的子元素,截 ...

  7. python UI自动化实战记录十一: 总结

    首先说说为什么想起来用自动化脚本来实现该项目的自动化. 工作还是以手工测试为主,业务驱动型的项目大概就是这样,业务不停地变,不断的迭代. 自动化测试实施的先决条件: 一 得有时间. 如果有时间大部分的 ...

  8. python UI自动化实战记录一:测试需求与测试思路

    测试需求: 项目包含两个数据展示页面,数据均来自于四个数据源接口. 测试操作步骤: 选择5个大类型中的一个,每个大类型下有3个子类型,选择任一子类型,页面数据更新.需验证页面上的数据与数据源接口数据一 ...

  9. python UI自动化实战记录八:添加配置

    添加配置文件写入测试地址等,当环境切换时只需修改配置文件即可. 1 在项目目录下添加文件 config.ini 写入: [Domain] domain = http://test.domain.cn ...

随机推荐

  1. 聚焦小游戏技术生态,腾讯游戏云GAME-TECH落地厦门

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云 发表于云+社区专栏 2018迎来了小游戏元年,据<2018年小游戏行业白皮书>显示:2018年小游戏市场规模预 ...

  2. 使用webgl(three.js)搭建一个3D智慧园区、3D建筑,3D消防模拟,web版3D,bim管理系统——第四课

    序:这段时间忙于奔波,好久没有更新了,今天更新一下,继续上节课的完善讲解,算是对前段时间的一个总结吧.披星戴月的时光也算有点应用效果了. 对于webgl(three.js)性能这一块我在上节课< ...

  3. 深入理解JavaScript系列(结局篇)

    介绍 最近几个月忙得实在是不可开交,终于把<深入理解JavaScript系列>的最后两篇“补全”了,所谓的全是不准确的,因为很多内容都没有写呢,比如高性能.Ajax安全.DOM详解.Jav ...

  4. SQL执行一次INSERT INTO查询,插入多行记录

    那如果我们想插入多行记录呢?可能你会想到多次运行INSERT语句即可,就像下面的php代码示例: INSERT INTO tbl_name (col1,col2) VALUES (,); 那如果我们想 ...

  5. spring-boot配置热更新

    spring boot使用的时候会遇到不断重启启动类的情况,热更新可以免去手动重启的烦恼,spring boot应用配置热更新主要有两种方式: 1.使用springloaded 配置pom.xml文件 ...

  6. spring-boot之简单定时任务

    首先是pom.xml依赖: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:/ ...

  7. 前端(五):JavaScript面向对象之内建对象

    一.数据类型 js中数据类型分为两种,原始数据累次能够和引用数据类型. 1.原始数据类型 Undefined.Null.Boolean.Number.String是js中五种原始数据类型(primit ...

  8. Java 异常的处理方式--throws和try catch

    异常的第一种处理方式throws. 看以下例子: import java.io.*;public class ExceptionTest04{ public static void main(Stri ...

  9. enter键触发事件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. sass变量

    sass变量用法 1.sass变量必须以$符开头,后面紧跟着变量名 2.变量值和变量名之间就需要使用冒号(:)分隔开(就像CSS属性设置一样) 3.如果值后面加上!default则表示默认值 默认变量 ...