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!
python UI自动化实战记录六:页面1用例编写的更多相关文章
- python UI自动化实战记录五:测试页面2 pageobject
该部分记录测试页面2-StrategyPage,所有页面2上的元素定位.操作.获取属性等方法都写在该类中. 1 页面2继承自BasePage: 2 页面2第一部分写的是所有的定位器 3 页面2第二部分 ...
- python UI自动化实战记录七:页面2用例编写
使用python自带的unittest测试框架,用例继承自unittest.TestCase类. 1 引入接口类和页面类 2 setUp函数中打开页面,定义接口对象 3 tearDown函数中关闭页面 ...
- python UI自动化实战记录四:测试页面1-pageobject
该部分记录测试页面1-IndexPage,所有首页上的元素定位.操作.获取属性等方法都写在该类中. 1 首页类继承自BasePage 2 首页类第一部分写的是所有的定位器 3 首页类第二部分类的方法, ...
- python UI自动化实战记录十:执行测试及测试报告
使用简单的unittest.TextTestRunner. 思路: 1 在report目录下创建当日测试报告目录 20190113 2 创建测试报告文件 f = 时间戳.txt 3 加载测试集,运行测 ...
- python UI自动化实战记录二:请求接口数据并提取数据
该部分记录如何获取预期结果-接口响应数据,分成两步: 1 获取数据源接口数据 2 提取后续页面对比中要用到的数据 并且为了便于后续调用,将接口相关的都封装到ProjectApi类中. 新建python ...
- python UI自动化实战记录三:pageobject-基类
脚本思路: 使用pageobject模式,写一个basepage基类,所有页面的通用方法封装到基类中.比如打开页面,关闭页面,等待时间,鼠标移到元素上,获取单个元素,获取一组元素,获取元素的子元素,截 ...
- python UI自动化实战记录十一: 总结
首先说说为什么想起来用自动化脚本来实现该项目的自动化. 工作还是以手工测试为主,业务驱动型的项目大概就是这样,业务不停地变,不断的迭代. 自动化测试实施的先决条件: 一 得有时间. 如果有时间大部分的 ...
- python UI自动化实战记录一:测试需求与测试思路
测试需求: 项目包含两个数据展示页面,数据均来自于四个数据源接口. 测试操作步骤: 选择5个大类型中的一个,每个大类型下有3个子类型,选择任一子类型,页面数据更新.需验证页面上的数据与数据源接口数据一 ...
- python UI自动化实战记录八:添加配置
添加配置文件写入测试地址等,当环境切换时只需修改配置文件即可. 1 在项目目录下添加文件 config.ini 写入: [Domain] domain = http://test.domain.cn ...
随机推荐
- CSS ::Selection的使用方法
大家都知道浏览器对选中的文本默认样式都是统一的,Windows下是一个深蓝色的背景,白字的前景,而在Mac下是一个淡蓝色背景,白色字体,就如上图所展示的一样,自从有了这个“::selection”选择 ...
- cg教程
Unity对shader的重点支持是cg语言,因为具有跨平台性质 Cg语言和CPU 上的C语言是很相似的,只不过有了自己的一套关键字和函数库 Cg语言的权威和入门教程在NVID1A的官方网站上,如果以 ...
- sqlplus column命令用法
column是sqlplus里最实用的一个命令,很多时候sql语句输出的列宽度不合适而影响查看,都需要用到这个命令来更改select语句中指定列的宽度和标题.大部分时候,我们可以简写column为co ...
- PHP中的PHP_EOL和DIRECTORY_SEPARATOR
1. PHP_EOL是php中的换行符,跨平台 1.1.换行符: unix系列用 \n windows系列用 \r\n mac用 \r PHP中可以用PHP_EOL来替代,以提高代码的源代码级可移植性 ...
- 通过mongodump和mongorestore实现Mongodb备份和恢复
Mongodb自带了mongodump和mongorestore这两个工具来实现对数据的备份和恢复. mongodump能够在Mongodb运行时进行备份,它的工作原理是对运行的Mongodb做查询, ...
- sublime text 2编辑器中文问题
Sublime Text 2是一个非常不错的源代码及文本编辑器,但是不支持GB2312和GBK编码在很多情况下会非常麻烦.不过Sublime Package Control所以供的插件可以让Subli ...
- 2017年11月26日 C#流&&窗体对话框
C#流 在顶端加入using System.IO就可以使用流 StreamReder a = new StreamReder();//读取 前面什么都可以 = sr.ReadToEnd();//用法 ...
- Java 基础(5)——数据转换 & 特殊的引用类型
数据转换 变量在第(3)篇中有讲到过八种数据类型,分别是能够用来表示整型的 byte.short.int.long 和表示浮点型的 float.double 以及字符型 char.布尔型 boolea ...
- Eclipse提示workspaces is use
问题描述: 有时候因为强行关闭Eclipse导致再次打开出现workspace提示正在使用 解决办法: 删除workspace目录下隐藏文件夹 .metadata 中的 .lock 文件 worksp ...
- 纪念一个神坑——react-native-echarts
一.问题 在rn项目里引用的时候,本该显示图表的界面显示出了一堆html... 二.原因 官方没给配置好 三.解决 1./node_modules/native-echarts/src/compone ...