python ui自动_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自动化实战记录五:测试页面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 ...

随机推荐

由两点坐标如何画出直线 matlab

由两点坐标如何画出直线  方法1:利用直线方程 斜率加截距 方法2:数据拟合 %由两点坐标得数据拟合直线与画线 x = [,]; y = [,]; k = ((-)/(-));% 由两点坐标得到直线斜 ...

三部曲二(基本算法、动态规划、搜索)-1006-The Same Game

The Same Game Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4585   Accepted: 1699 Des ...

Windows 8.1激活问题

今天电脑开机,莫名的出现“你的Windows证书即将过期”. 系统本来用HEU_KMS_Activator 已激活成功,但查看系统激活状态时,结果如下图所示: 显示系统是已激活成功的.但还是有提示说系 ...

【hihocoder 1257 Snake Carpet】构造

2015北京区域赛现场赛第4题. 题面:http://media.hihocoder.com/contests/icpcbeijing2015/problems.pdf OJ链接:http://hih ...

HDOJ 3415 Max Sum of Max-K-sub-sequence(单调队列)

因为是circle sequence,可以在序列最后+序列前n项(或前k项);利用前缀和思想,预处理出前i个数的和为sum[i],则i~j的和就为sum[j]-sum[i-1],对于每个j,取最小的s ...

android中怎么把自己须要的app启动图标集中到一个弹出框中

先看效果图 这个是我们自己的apk点击之后的效果 下边是布局文件 activity_main.xml主布局文件 "XC90","BMW&qu ...

Java数据结构和算法(三)——冒泡、选择、插入排序算法

上一篇博客我们实现的数组结构是无序的,也就是纯粹按照插入顺序进行排列,那么如何进行元素排序,本篇博客我们介绍几种简单的排序算法. 1.冒泡排序 这个名词的由来很好理解,一般河水中的冒泡,水底刚冒出来的 ...

[php] php操作xml

xml文件

你可能感兴趣的:(python,ui自动)