import xlrd
from selenium import webdriver
import ddt
import time
import unittest class Excel(object): def __init__(self,excel_path,sheet_name):
self.excel_file=xlrd.open_workbook(excel_path)
self.sheet =self.excel_file.sheet_by_name(sheet_name)
self.sheet_name =self.sheet.name
self.rows = self.sheet.nrows
self.cols = self.sheet.ncols """返回单元格,计数(0,0)表示第一行,第一列的单元格"""
def get_sheet_data(self,row,col):
test_data = self.sheet.cell(row ,col).value """读取excel,并处理数据返回"""
def read_excel(self):
list=[]
for row in range(2,self.rows):
lists=self.sheet.row_values(row)[:self.cols]
list1=[]
dict={}
for j in range(self.cols): list1.append(lists[j].encode('utf-8')) dict['order_currency']=list1[0].decode('utf-8')
dict['order_amount']=list1[1].decode('utf-8')
dict['DFSXml']=list1[2].decode('utf-8')
dict['card_number']=list1[3].decode('utf-8')
dict['secureCode']=list1[4].decode('utf-8')
list.append(dict)
return list class Base(object):
def __init__(self,driver):
self.driver = driver
def by_xpath(self,xpath):
return self.driver.find_element_by_xpath(xpath) def by_id(self,id):
return self.driver.find_element_by_id(id) def inputText(self,ele,text):
ele.clear()
ele.send_keys(text) def getTitle(self):
return self.driver.current_url def run(browser,secureCode,order_currency,order_amount,card_number,DFSXml):
browser.get("https://dfs.oceanpayment.com/pages/testPay.html")
page = Base(browser)
page.inputText(page.by_id("secureCode"), secureCode)
page.inputText(page.by_id("order_currency"),order_currency)
page.inputText(page.by_id("order_amount"), order_amount)
js_bom = "document.documentElement.scrollTop=500"
browser.execute_script(js_bom)
page.inputText(page.by_id("order_number"),card_number)
jsToTop ="document.documentElement.scrollTop=-500"
browser.execute_script(jsToTop)
page.inputText(page.by_id("DFSXml"),DFSXml)
page.by_id("btnAdd").click()
alert = browser.switch_to_alert()
alert.accept()
time.sleep(5)
print(page.getTitle()) @ddt.ddt
class TestRun(unittest.TestCase): path=r"E://Card.xlsx" #windows 保存excel文件的路径,需要更改根据存放位置
st_name='Diners' # excel sheet 名称不变不改
test_data= Excel(path,st_name).read_excel()
def setUp(self):
opt= webdriver.ChromeOptions()
opt.add_argument('--start-maximized')
driver=webdriver.Chrome(options=opt)
driver.implicitly_wait(10)
self.driver=driver
def tearDown(self):
self.driver.close()
@ddt.data(*test_data)
def test_pay(self,dict):
run(self.driver,dict["secureCode"],dict["order_currency"],dict["order_amount"],dict["card_number"],dict['DFSXml']) if __name__ == '__main__':
unittest.main()

  

ddt 测试用例UI运用的更多相关文章

  1. ddt读取json文件测试用例的执行顺序

    一. 源码的说明 在源码中,ddt的file_data函数下有这样一段话 意思是说,如果json文件的内容是字典,字典的键名将会作为测试用例名的后缀,字典的值将会作为测试数据,如果这样的话,如果键名字 ...

  2. UI测试用例设计,场景测试法

    百度一番,没有发现详细的UI测试用例设计方法,只能自己整理一下,学习.改进. 那么正题来了,我们慢慢缕下思路: 1.整理要测实体中的,处理逻辑.触发规则.动作. 2.将场景测试抽象出来 3.到这个时候 ...

  3. (appium+python)UI自动化_09_unittest批量运行测试用例&生成测试报告

    前言 上篇文章[(appium+python)UI自动化_08_unittest编写测试用例]讲到如何使用unittets编写测试用例,并执行测试文件.接下来讲解下unittest如何批量执行测试文件 ...

  4. python -- unittest测试用例函数无法传参的处理方法(ddt)

    1.超继承 重写测试用例类的init方法,如下所示. import requests import unittest class XiaoheiCases(unittest.TestCase): de ...

  5. web自动化 -- HTMLreport(一)测试报告自定义测试用例名,重写ddt

    一.需求痛点 1.HTMLreport测试报告的用例名不明确 2.希望可以自定义HTMLreport测试报告的用例名 3.痛点截图 二.解决办法 1.原因分析 HTMLreport测试报告中的用例名是 ...

  6. 最全的测试用例(UI)

    一.文本框为字符型 必填项非空校验:      1.必填项未输入--程序应提示错误:      2.必填项只输入若干个空格,未输入其它字符--程序应提示错误: 字段唯一性校验:(不是所有字段都作此项校 ...

  7. ddt Ui 案例2

    准备用例文件:testcase1.py testcase2.py import ddt import unittest from HTMLTestRunner import HTMLTestRunne ...

  8. (appium+python)UI自动化_08_unittest编写测试用例

    前言 unittest是python自带的单元测试框架,类似于Junit(Java单元测试框架).支持自动化测试,可编写测试前置&后置条件,并且可批量运行测试用例并生成测试报告. 使用unit ...

  9. unittest(9)- 使用ddt给测试用例传参

    # 1. http_request.py import requests class HttpRequest: def http_request(self, url, method, data=Non ...

随机推荐

  1. htm-文字标签和注释标签

    文字标签:修改文字的样式 <font></font>  属性: size:文字的大小 取值范围 1-7,超出了7,默认还是7 color:文字颜色 两种表示方法 英文单词:re ...

  2. 原 java调整数据顺序是奇数位于偶数的前面(思路与实现)

    题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 思路一: 首先这 ...

  3. CRM 安装过程 AD+SQL+CRM

    AD: 通过服务器管理器添加域服务,配置域服务器域名为crm5.lab. 注意:使用高级模式安装. 说明:服务器是windows server 2003 那么就选windows server 2003 ...

  4. ERP 实施执行力提高的障碍,看看你中了几招?

    据统计,在国内 ERP 实施的成功率非常低,成功实施实现系统集成的只占10%-20%:没有实现系统集成或实现部分集成的只有30%-40%:而失败的却占50%,并且在实施成功的10%-20%中大多为外资 ...

  5. 在RecyclerView列表滚动的时候显示或者隐藏Toolbar

    先看一下效果: 本文将讲解如何实现类似于Google+应用中,当列表滚动的时候,ToolBar(以及悬浮操作按钮)的显示与隐藏(向下滚动隐藏,向上滚动显示),这种效果在Material Design ...

  6. 记录一次测试环境遇到的push消息记录

    测试环境测试push消息,调用消息中心同事的api接口,感觉怎么都调用不通.纠结了一天,最终发现原因:一是版本的问题,不同的测试包有不同的版本,不同的版本 可能push的消息不同.二是 用户有没有 开 ...

  7. 如何查看Ext自带的API和示例

    Ext是一款富客户端开发框架,它基于JavaScript.HTML和CSS开发而成,无须安装任何插件即可在常用浏览器中创建出绚丽的页面效果. 1.下载地址http://www.sencha.com/p ...

  8. 关于 未在本地计算机上注册“VFPOLEDB.1” 的解决方案

    在很古老的时候猿们会使用 Microsoft Visual FoxPro(即Dbf)的数据库,用于对数据的存储,和Access类似,而且两者可以互转,可以把它当成数据文件,如Access数据(MDB) ...

  9. Oracle EBS 附件功能

    SELECT fde.table_name, fde.data_object_code, fdet.user_entity_name, fdet.user_entity_prompt, fat.app ...

  10. iOS7中修改StatusBar的显示颜色

    iOS7中修改StatusBar的显示颜色 效果图如下: 在iOS7中想手动修改statusBar的颜色,第一步需要做的就是在plist文件中设置View controller-based statu ...