python实现接口测试

python实现接口测试
python实现接口测试

刚进一个新公司,可能要做接口测试,没有用过工具,抄了几行代码,根据自己的理解整理一下,供自己以后学习备用

贴上源码,也希望感兴趣的朋友一起讨论,mail: lnbcc0727@https://www.360docs.net/doc/4816591573.html,

使用说明:1.XML可以根据需要,组织测试案例,

2.EXCEL除了预期结果列要写上预期之外,其它列不用填写

3.源码实现执行XML案例,然后与EXCEL中预期做对比,最后将测试结果写入

EXCEL中(执行案例时不要打开EXCEL,以免影响写入操作)

一、XML案例源码(casedata.xml)

detail="每一个operation是一种接口,可增加Operation 在一个脚本中执行多个接口测试"

url="https://https://www.360docs.net/doc/4816591573.html,/" action="post">

......

......

........

>

二、保存结果的EXCEL(WebServiceCases.xlsx)

三、python源码:

import requests

from xml.dom.minidom import parse

from openpyxl.reader.excel import load_workbook

# 读取XML案例和存有结果的excel

AUTO_RESULT=u"WebServiceCases.xlsx"

case_file=open(u"casedata.xml","rb")

tree=parse(file=case_file)

collection=tree.documentElement

operation_list=collection.getElementsByTagName("Operation")

print(operation_list)

book=load_workbook(AUTO_RESULT)

print(book)

sheet_names=book.get_sheet_names()

print(sheet_names)

working_sheet=book.get_sheet_by_name(sheet_names[0])

print (working_sheet)

start_index=2

for operation in operation_list:

uri=operation.getAttribute('url')

action_type=operation.getAttribute('action')

function_name=operation.getAttribute('name')

case_list=operation.getElementsByTagName('case')

print(action_type)

print(function_name)

print(case_file)

# 获得一次测试中所用到的参数的个数,定义保留参数的字典

for case in case_list:

parameter_list=case.getElementsByTagName('Parameter')

length=len(parameter_list)

print (length)

json_data={}

# 生成一个字典,字典中保留了所用到参数及所对应的测试数据

for index in range(length):

print ("index is:"+str(index))

name=parameter_list[index].getAttribute('name')

value=parameter_list[index].getAttribute('value')

json_data[name]=value

if action_type=="post":

print (json_data)

# 输入参数后系统响应

response=requests.post(uri,data=json_data)

case_id_locator='A'+str(start_index)

working_sheet.cell(case_id_locator).value=start_index book.save(AUTO_RESULT)

#将测试中所用到的URL写到测试结果中

service_url_locator='B'+str(start_index)

working_sheet.cell(service_url_locator).value=uri

book.save(AUTO_RESULT)

# 将XML文件中保存的所要测试的方法保存在结果表中。

function_name_locator='C'+str(start_index)

working_sheet.cell(function_name_locator).value=function_name

book.save(AUTO_RESULT)

# G列保存系统响应的内容

actual_result_locator='G'+str(start_index)

working_sheet.cell(actual_result_locator).value=response.content

book.save(AUTO_RESULT)

# 预期结果事先写在E列,脚本读取预期结果

expect_resutl_locator='E'+str(start_index)

expect_content=working_sheet.cell(expect_resutl_locator).value

run_result_locator='H'+str(start_index)

# 保存结果

# 如果预期的内容(expect_content)和响应的内容一致,刚通过,否则案例失败if expect_content == response.content:

print ("true")

working_sheet.cell(run_result_locator).value='PASS'

else:

print("false")

working_sheet.cell(run_result_locator).value='FAIL'

book.save(AUTO_RESULT)

# get方法响应内容

elif action_type=="get":

response=requests.get(uri,data=json_data)

print(response)

print("get the webserveric:"+ str(start_index))

start_index+=1

pythonwebdriver自动化测试实战

. python webdriver 项目实战 文档Word . 第5章测试模型与测试脚本优化 第一节、测试模型介绍 线性测试通过录制或编写脚本,一个脚本完成用户一套完整的操作,通过对脚本的回放来进行自动化测试。这是早期进行自动化测试的一种形式;我们在上一章中练习使用webdriver API 所编写的脚本也是这种形式。 脚本一 fro selenium impor webdriver impor time driver = webdriver.Firefox() driver.get睜睷?硸) driver.find_element_by_id瑜啢敳乲浡).send_keys甥敳湲浡) driver.find_element_by_id瑜偢獡睳牯).send_keys???) driver.find_element_by_id扜湴潌楧).click() 执行具体用例操 ...... driver.quit ()脚本二 from selenium import webdriver import time driver = webdriver.Firefox() driver.get(睜睷?硸?) driver.find_element_by_id(瑜啢敳乲浡履).send_keys(甥敳湲浡履)

driver.find_element_by_id(瑜偢獡睳牯層).send_keys(???尶) driver.find_element_by_id(扜湴潌楧屮).click() #执行具体用例操作 文档Word . ...... driver.quit ()通过上面的两个脚本,我们很明显的发现它的问题: 一个用例对应一个脚本,假如界面发生变化,用户名的属性发生改变,不得不需要对每一个脚本进行修改,测试用例形成一种规模,我们可能将大量的工作用于脚本的维护,从而失去自动化的意义。 这种模式下数据和脚本是混在一起的,如果数据发生变也也需要对脚本进行修改。 这种模式下脚本的可重复使用率很低。 模块化与库 我们会清晰的发现在上面的脚本中,其实有不少内容是重复的;于是就有了下面的改进。login.py 登录模de login(): driver.find_element_by_id瑜啢敳乲浡).send_keys甥敳湲浡) driver.find_element_by_id瑜偢獡睳牯).send_keys??㈱) driver.find_element_by_id扜湴潌楧).click() 测试用例:#coding=utf-fro selenium impor webdriver 文档Word . 注意,上面代码并非完整代码,不能运行。

Python小测试_2

第一周 1.下列关于函数的描述中,正确的说法有哪些? ·函数可以是自己定义的,也可以是Python内置的·一个函数可以被重复调用多次 ·函数可以不带参数,也可以带多个参数·函数可以有返回值,也可以没有返回值 2.一个if语句下可以有多少个elif分支? ·可以是0个,也可以是多个。 3.当p为True,q为False时,布尔表达式not ( p and not q )的结果是什么?【pycharm 上运行】 请在下面的输入框里填写答案True或False。【写print()里运行】·False 4.给定一个正整数x,希望用一个表达式直接求出它的十位数。例如:当x等于923时,得到的结果是2;当x等于1234时,得到的结果是3。下列哪些表达式可以计算出正确的结果?【写print()里运行】 (请在PyCharm中验证下列每个表达式的结果之后再作答) x / 10 ·(x // 10) % 10 (x - x % 10) / 10 ·int(((x - x % 10) % 100) / 10) * 比如: x1=923 x2=1234 print(x1 / 10) 5.函数random.randint(0, 10) 和random.randrange(0, 10)产生的随机数范围不同。值得注意的是,【pycharm 上运行】在大多数Python编程中更习惯使用random.randrange(),因为该函数产生的数值更符合Python的范围习惯。 哪个数字是这两个函数其中一个可以产生的,而另一个函数无法产生的?请把这个数输入到下面的输入框中。·10* 因为:randint a<=x<=b 等于10 randrange a<=x

python 接口自动化、UI自动化开发环境(全)

一、环境及软件最新下载地址 二、安装配置JDK 三、安装配置python 四、安装配置eclipse 五、eclipse配置python开发环境 六、eclipse新建python项目 七、接口自动化环境搭建 八、UI自动化环境搭建 九、Windows GUI程序自动化环境搭建 十、框架 一、环境及软件最新下载地址 1. 操作系统: win10 企业版 2. JDK:1.8.0_241; 3. eclipse:Oxygen.3a Release ( 4.7.3a); 4. python:3.8.1 5. 本例所以软件下载地址: 链接: https://https://www.360docs.net/doc/4816591573.html,/s/1hVd--DOvFNW-yhwNiSxmkg 提 取码: iyei 6. JDK最新下载地址: https://https://www.360docs.net/doc/4816591573.html,/java/technologies/javase-downloads.html 7. eclipse最新下载地址: https://https://www.360docs.net/doc/4816591573.html,/downloads/ 8. python最新下载地址: https://https://www.360docs.net/doc/4816591573.html,/ftp/python/ 二、安装配置JDK 第一步:安装JDK 双击“jdk-8u241-windows-x64.exe”,点击下一步一直到安装完成 第二步:配置JDK 我的电脑-->属性-->高级系统设置-->环境变量 1. 新建系统环境变量 JAVA_HOME C:\Program Files\Java\jdk1.8.0_241 (JDK的安装路径) 2. 新建系统环境变量 PATH(如已存在,即双击编辑新建) %JAVA_HOME%\bin %JAVA_HOME%\jre\bin 3. .新建系统环境变量 CLASSPATH(如已存在,即双击编辑) .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 4. 测试环境变量配置是否成功: 开始-->运行--〉CMD 键盘分别敲入: JAVAC(输入完毕, 回车键)JAVA输入完毕,回车键) 出现相应的命令,而不是出错信息,即表示配置成功

Python小测试_4

第三周 A...... 1.编写Python程序绘制箭靶的图形,应该按照什么顺序画这些圆?·由大到小 2.下面哪些选项是正确的?【pycharm 上运行】 int("5.4") ·int('5') ·float("5.4") int('5.4') float("5 five") ·int("5") ·float("5") 3.defdate(year, month): 【pycharm 上运行】 """ 给定year和month两个参数, 返回一个字符串,形式为year-month。 例如当year为2015,month为10的时候,返回字符串"2015-10", """ return ??? print(date(2015,10)) ·str(year) + "-" + str(month) 4.仔细阅读下面的描述信息,将其转换为Python程序。【pycharm 上运行】 创建一个300*300像素的画布,画两个圆,线宽均为10像素,颜色为白色,半径为20像素。其中一个圆的坐标为 (90,200),另一个圆的坐标为(210,200)。再画一条红色的直线,线宽为40像素,起始坐标和终止坐标分别为 (50,180)和(250,180)。然后画两条线宽为5像素,颜色为红色的直线,第一条起始和终止坐标分别为(55,170)和(90,120),第二条线起始和终止坐标分别为(90,120)和(130,120)。最后再画一条线宽为140像素,颜色为红色的直线, 起始坐标为(180,108),终止坐标为(180,160)。 运行你的代码,产生的图像是什么?·汽车 5.在SimpleGUITk中,绘制图形的事件处理函数的参数是什么?·画布对象(通常起名为canvas) 6.请问draw_circle,draw_image,draw_text,draw_line等函数应该在程序的哪一部分被调用? ·在可以访问到画布对象(canvas)的函数中 7.当你用draw_text()在画布上绘制文字的时候,如果你设置的文本显示位置超出了画布的坐标,会发生什么事情? (你可以在PyCharm中进行测试后再作答!)·部分或没有文本显示出来,文本显示的位置只有在画布内才会显示出来。 8.Python中哪个操作符可以将两个字符串连接成一个字符串,例如“我正在”和“学习python”连接后成为"我正在学习python"。(建议在idle或PyCharm中对每一个选项进行测试后再作答!)·+ 9.假设画布宽为400像素,高为300像素。要求画出画布的对角线,线的颜色为黄色,线宽为10像素。下面哪几条语句能够完成? canvas.draw_line((400, 400), (300, 300), 10, "yellow") ·canvas.draw_line((400, 0), (0, 300), 10, "yellow") canvas.draw_line((300, 0), (0, 400), 10, "yellow") ·canvas.draw_line((0, 0), (400, 300), 10, "yellow") canvas.draw_line((300, 300), (400, 400), 10, "yellow") 10.计算下列字符串的长度?【pycharm 上运行】 1111l1111l1111l1111l111111*********l11l1l111ll1ll11l111l111l111l111111111l1111l111l111l111l111l1111111 请使用内置函数len统计该字符串的长度,将结果填入下列文本框中。·102 第三周第一页 B....

接口自动化测试框架实例详解教程python+requests

接口自动化测试框架实例详解教程python+requests 前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的是java语言,但对于一个学java,却在学python的我来说,觉得python比起java更简单些,所以,我决定自己写python的接口自动化测试框架,由于本人也是刚学习python,这套自动化框架目前已经基本完成了,于是进行一些总结,便于以后回顾温习,有许多不完善的地方,也遇到了许多的问题,希望大神们多多指教。下面我就进行今天的主要内容吧。 1、首先,我们先来理一下思路。 正常的接口测试流程是什么? 脑海里的反应是不是这样的: 确定测试接口的工具—> 配置需要的接口参数—> 进行测试—> 检查测试结果(有的需要数据库辅助)—> 生成测试报告(html报告) 那么,我们就根据这样的过程来一步步搭建我们的框架。在这个过程中,我们需要做到业务和数据的分离,这样才能灵活,达到我们写框架的目的。只要好好做,一定可以成功。这也是我当初对自己说的。 接下来,我们来进行结构的划分。 我的结构是这样的,大家可以参考下: common:存放一些共通的方法 result:执行过程中生成的文件夹,里面存放每次测试的结果 testCase:用于存放具体的测试case testFile:存放测试过程中用到的文件,包括上传的文件,测试用例以及数据库的sql 语句 caselist:txt文件,配置每次执行的case名称 config:配置一些常量,例如数据库的相关信息,接口的相关信息等 readConfig:用于读取config配置文件中的内容 runAll:用于执行case

PYTHON测试题

Python测试题 一、填空题 1.Python使用符号#标示注释;以缩进对齐划分语句块。 2、Python序列类型包括字符串、列表、元组三种; 字典是Python中唯一的映射类型。 3、Python中的可变数据类型有列表和字典,不可变数据类 型有字符串、数字、元组。 4、Python的数字类型分为整数、长整数、浮点、 复数等子类型。 5、Python提供了两个对象身份比较操作符is和is not来测试两个变量是否指向同一个对象,也可以通过内建函数type()来测试对象的类型。 6、设s=‘abcdefg’,则s[3]值是‘d’,s[3:5]值是‘de’, s[:5]值是‘abcdf’,s[3:]值是‘defg’,s[::2]值是‘aceg’,s[::-1]值是‘gfedcba’,s[-2:-5]值是‘’。 二、选择题 1.下列哪个语句在Python中是非法的?() A、x=y=z=1 B、x=(y=z+1) C、x,y=y,x D、x+=y 2.关于Python内存管理,下列说法错误的是()

A、变量不必事先声明 B、变量无须先创建和赋值而直接使用 C、变量无须指定类型 D、可以使用del释放资源 3、下面哪个不是Python合法的标识符() A、int32 B、40XL C、self D、__name__ 4、下列哪种说法是错误的() A、除字典类型外,所有标准对象均可以用于布尔测试 B、空字符串的布尔值是False C、空列表对象的布尔值是False D、值为0的任何数字对象的布尔值是False 5、下列表达式的值为True的是() A、5+4j>2-3j B、3>2>2 C、(3,2)<(‘a’,’b’) D、’abc’>‘xyz’ 6、Python不支持的数据类型有() A、char B、int C、float D、list 7、关于Python中的复数,下列说法错误的是() A、表示复数的语法是real+image j B、实部和虚部都是浮点数 C、虚部必须后缀j,且必须是小写 D、方法conjugate返回复数的共轭复数 8、关于字符串下列说法错误的是() A、字符应该视为长度为1的字符串 B、字符串以\0标志字符串的结束

Python测试题(题)

Python题(共100分) 一.(共18题,1题5分,共90分) 1. 以下是Python比较运算符中的等于的是( ) A. >= B. <= C. == D. = 2. Python中“假”用什么表示?( ) A. True B. false C. False D. true 3. 以下结果为True的是?( ) A. 3 >= 5 B. 4 == 4 C. 5 < 3 D. 5 != 5 4. 我们使用哪个关键字给模块起一个小名呢?( ) A. as B. import C. Python D. sa 5. 以下程序结果为False的是?( ) A. True and True B. True or False C. False and True D. True or True 6. age = 20 beauty = 95 下列程序结果为True的是?( ) A. age >= 18 and beauty >=80 B. age <= 18 and beauty >=80 C. age >= 18 and beauty <=80 D. age <= 18 and beauty <=80 7. score = 55 if score >= 90 : print(‘3个红花’) elif score >= 80 : print(‘2个红花’) elif score >= 60 : print(‘1个红花’) else : print(‘继续努力’) 成绩等级输出的结果是( ) A. 3个红花 B. 2个红花 C. 1个红花 D. 继续努力 8. 以下程序输出的结果是( ) print(‘1’ + ‘1’) A. ‘11’ B. ‘2’ C. ?一 D. 555 9. 以下程序输出的结果是( ) print(1 + ‘1’) A. ‘11’ B. 程序报错 C. 2 D. ‘2’ 10. str() 将值转化成整数 int() 将值转化成字符串 11. year = ‘2017’ 以上程序结果为'20171'的是? ( ) A. print(year + 1) B. print(str(year) + 1) C. print(int(year) + 1) D. print(year + str(1)) 12. if 条件: print(‘我是编程小达人’) 根据上述代码分析:当以下哪个 选项作为条件时, 会在猿编程IDE提示窗口输出 “我是编程小达人”( ) A. 3 <= 5 B. 4 != 4 C. 5 < 3 D. 6 == 5 13. 有代码如下: if 56 == 100: 语句1 语句2 请问执行哪些语句( ) A. 执行语句1和语句2 B. 只执行 语句1 C. 什么都不执行 D. 只执行语句 2 14. print(‘666’ == ‘666’) 执行上面代码,输出的结果是? ( ) A. True B. False C. ‘666’== ‘666’ D. 不知 道 15. 以下程序结果为True的是?( ) A. True and False B. True and True C. False and True D. False and False 16. 以下程序结果为False的是? ( ) A. True or False B. True or True C. False or True D. False or False 17. “年龄小于等于12或者性别为女” 表达正确的是?( ) A. age < 12 or gender == ‘女’ B. age <= 12 or gender = ‘女’ C. age <= 12 or gender == ‘女’ D. age < 12 or gender = ‘女’ 18. age = 25 if age >= 18: print(‘晨晨是成年人’) print(‘晨晨很胖’) 运行程序后交互窗口的显示结 果为( ) 年龄:25 A、晨晨是成年人 晨晨很胖 C、晨晨是宝宝 B、晨晨很胖 D、晨晨是成年人 二.(10分) 1. 电脑中我们向文件内写入内容的 步骤是?( ) A. 写入文件——> 打开文件— —> 关闭文件 B. 打开文件——> 写入文件— —> 关闭文件 C. 打开文件——> 关闭文件— —> 写入文件 D. 关闭文件——> 写入文件— —> 打开文件

Python小测试-3

第二周 A...... 1.用simpleguitk创建的应用程序框架是由哪三部分组成的? 标题 ·控制区域 鼠标 边框 ·画布 键盘 ·状态区域 背景区域 选择区域 2.假设在程序中已经导入simpleguitk,下列哪项对create_frame()函数的调用是正确的?(如果不肯定你的答案,先在PyCharm中测试,然后再作答) ·frame = simpleguitk.create_frame(100, 100, 100, 100) ·frame = simpleguitk.create_frame("测试", 200, 200, 300) ·frame = simpleguitk.create_frame("我的框架", 200, 200) ·frame = simpleguitk.create_frame(150, 150, 150) * import simpleguitk frame=simpleguitk.create_frame() frame.start() 3.用simpleguitk创建交互式应用程序时,通常包含以下7个步骤: 1、定义辅助函数 2、创建框架 3、定义事件处理函数 4、启动框架和定时器 5、初始化全局变量 6、注册事件处理函数 7、定义类 创建程序时最后一步应该是哪一步?注意:上面的7个步骤顺序已被打乱 请选择最后一步对应的数字序号: ·4 4.m = 4 n = 2 def f(m): x = m + n return x 以上程序中,哪些变量的作用范围是全局的? ·m f x ·n

n = 2 def f(m): x = m + n return x 以上程序中,哪些变量的作用范围仅在函数内部? ·m f ·x n 6.用simpleguitk模块开发游戏程序,程序中的事件处理函数是如何产生的? ·你自己通过编写代码来定义事件处理函数 7.假设在程序里声明了一个全局变量x = 8,该程序还要定义一些函数, 以下哪些函数里面需要添加global x 声明?【可以在pycharm 上运行看看】 (如果你没有把握,请在PyCharm对每个选项进行测试后再作答。) def b(x, y): x = x + y return x ·def a(y): x = x + y return y def d(y): y = x + y return y def c(y): return x + y 8.??? frame = simpleguitk.create_frame("我的框架", 200, 200) frame.start() 如果上述程序执行时能够正常生成一个窗口框架(不抛出错误),那么???处可以用 下列哪一条语句替换? ·import simpleguitk 9. count=0 【pycharm 上运行】 def square(x): global count count += 1 return x**2 print (square(square(square(square(5))))) 以上程序执行后,变量count的数值是多少?你可以在PyCharm中进行测试,请将你认为的正确值填入到下面的输入框中。·4

PYTHON测试题

PYTHON测试题

A.defines a list and initializes it B.defines a function, which does nothing C.defines a function, which passes its parameters through D.defines an empty class A. B. C. D. E. A. B. C. D. E. A. B. C. D. E. A. B. C. D. E.

A. B. C. D. E. A.syntax error B.4 C.5 D.6 E.7 A. B. C. D. E. A.7 B.12 C.24 D.36 E.48

如何用 Python实现自动化测试

如何用 Python实现自动化测试 近期一直在看王阳明的相关书籍,他的一个观点我非常赞同,不管要学习什么一定要立志,立志是非常非常重要的,但是立志前一定要有动机,或者说要有"打击",那种让 你内心感到瓦凉瓦凉的打击!我在软件测试这个行业工作了12年之久,截至5年前,我 一直很愉悦地,内心充盈地做着黑盒测试,曾几何时我也觉得最好离"开发"远远的,因为 很多人都说:女孩子做测试挺好的~~ 但是,我遇到很一个非常现实而残忍的问题:"裁员",想想自己也挺奇葩的,在一个公司竟然待了12年之久,在这12年里,因为各种原因,我经历了大大小小的裁员有5次之多,一有裁员需求,老板第一个考虑的就是测试人员。每一次裁员,都是自己团队里的兄弟姐妹,我要亲自告诉他或她,因为公司现在裁员,需 要你离开公司,虽然你的工作是合格的,甚至是优秀的~~然后我要鼓起勇气陪着哭泣的他或她去立刻办理离职手续,一刻也不能停留~~你能想象我内心的崩溃吗?每一次我都会问为什么又是我们?每一次老板都会坦率地告诉我,为什么裁员考虑的是我们测试团队:就 是因为可取代性太强了!!我真的实实在在意识到了黑盒测试的无力。 公司在寒冬时,需要"蓄积能量",也就是需要减少开支,老板就要开始衡量,哪类研 发人员被裁,后续如果公司渡过难关后补起来比较容易,很不幸,每一次评估下来都是测 试人员。有个声音在我脑海里越来越清晰:不能这样,我们团队不能总是做可取代性强的 工作!!所以测试的发展方向是什么?我要有什么样的技能才能改观老板对我们的认知??我开始在网上找,当然也在51testing这样专业的网站上找寻,我找寻的结果是:未来的 测试应该是以自动化为主,手动测试为辅。所以测试人员必须要学会编程,因为测试是一 个无穷尽的工作,如何体现测试人员的价值,就是在单位时间内能有更多的产出,有让老 板瞠目结舌的产出!! 怎么学习Python在第二类问题中有详细说明,期间遇到的困难实在太多了,首要的 问题就是团队的信心不足,我们离开coding实在太久了,这个困难,我只能说,受到的 打击越大,越深,信心就会越足,容许我先哭一会~~ 除了这些形而上的困难,当然也有 实实在在的困难,我举一个实际且非常具体的问题:电脑1开发的脚本,可以正常运行,移植到电脑2就无法运行? 我们在开发时遇到上述问题,开发者开始一直纠结是电脑环境的问题,问题一直在发散,一直在发散,最后问题越来越复杂,搞到最后不可收拾......,最后他告诉我,这个开发任务无法进行@_@,这个小伙子成功在他的小主管的心里留下了:解决实际问题差的印象...... 他的问题在于没有回到问题的本质:Python的作用是定位,操作;就首先回到确认 窗口是否定位的思路上(当时他竟然还质疑他的小主管:窗口肯定定位了,因为在他的开 发电脑上都是定位的好好的*_*):真的发现窗口没有被成功定位。开发者就很困惑,为什么在电脑1是好的,电脑2就不行。他根本没想到是定位出的问题,所以连简单的确认动作也没做!然后再网上一通乱搜,真的越搜越晕,越搜问题越发散。

python实现接口测试

刚进一个新公司,可能要做接口测试,没有用过工具,抄了几行代码,根据自己的理解整理一下,供自己以后学习备用 贴上源码,也希望感兴趣的朋友一起讨论,mail: lnbcc0727@https://www.360docs.net/doc/4816591573.html, 使用说明:1.XML可以根据需要,组织测试案例, 2.EXCEL除了预期结果列要写上预期之外,其它列不用填写 3.源码实现执行XML案例,然后与EXCEL中预期做对比,最后将测试结果写入 EXCEL中(执行案例时不要打开EXCEL,以免影响写入操作) 一、XML案例源码(casedata.xml) ...... ...... ........ > 二、保存结果的EXCEL(WebServiceCases.xlsx) 三、python源码: import requests from xml.dom.minidom import parse from openpyxl.reader.excel import load_workbook # 读取XML案例和存有结果的excel AUTO_RESULT=u"WebServiceCases.xlsx" case_file=open(u"casedata.xml","rb")

python多接口测试

python多接口测试 # -*- coding:utf-8 -*- import requests import json import unittest class TestTruck(unittest.TestCase): @classmethod def setUpClass(self): print"---setUpClass---" def test_login(self): '''获取token,需要图形验证码''' url = "http://192.168.3.21:30226/auth/token/profile/get/" headers = {'Content-Type':'application/json;charset=UTF-8'} request_param = { 'username' : '10086', 'password' : '10086', 'captcha':'XHUV', 'hashkey':'7265011fcd710066653b8615fb0fbb8ef44652a8' } response = requests.post(url, data=json.dumps(request_param), headers=headers) # print response.json()['token'] def auth_token_get(self): '''直接获取token,跳过图形验证码''' url = "http://192.168.3.21:30226/auth/token/get/" request_param = { 'username' : '10086', 'password' : '10086'

Python小测试_7

第六周 A....... 1.每个类的定义必须包含一个初始化方法,该初始化方法的名称是什么?·__init__(两边各2个下划线) 2.Python语言中,函数和方法的主要区别是什么? ·函数在类之外定义,而方法在类当中定义,方法是类的一部分。 4.假设你有以下类和方法的定义(省略了部分代码): class My_Class: … def my_method(self, value1, value2): """假设该方法有2个参数,该方法可以完成某种功能。""" … my_object = My_Class() 最后一行定义了一个名称为my_object的变量,该变量是My_class类的一个对象。以下哪个是使用该对象my_method 方法的正确语法? ·my_object.my_method(1, 2) 5.我们希望小球具备移动的能力,以下哪个设计是正确的? ·class Ball: def __init__(self, pos, r): self.center = pos self.radius = r def move(self, move_vector): """通过加上给定矢量的分量来改变小球的位置""" self.center[0] += move_vector[0] self.center[1] += move_vector[1] # balls : 为Ball对象的列表 balls = … 6.多数面向对象的编程语言允许方法重载,即同一个方法名称可以因其参数的不同而出现多个版本。本题你将通过试验来体会什么是方法重载并验证Python是否支持重载。 请运行以下Python代码: class Overload(object): def __init__(self, param1): pass def __init__(self, param1, param2): pass obj1 = Overload(1) obj2 = Overload(1, 2) Overload类定义完成后,我们希望创建2个Overload对象,如果Python支持重载,你将能够使用1个参数创建一个Overload 对象,也能够使用2个参数创建一个Overload对象。通过测试,Python是否支持重载? ·不支持 9.按照Python建议的编码格式要求(PEP 8),类的名称应当遵循首字母大写规则,以下哪些是符合要求的类名称? ·Student ·ImageInfo ·BankAccount 10.Python语言中对象这一术语的含义是什么?请从下面的下拉式列表中选择正确的答案。 ·根据类定义创建的一个具体实例 第六周第一页

python_webdriver_自动化测试实战

python webdriver 项目实战

第5章测试模型与测试脚本优化 第一节、测试模型介绍 线性测试 通过录制或编写脚本,一个脚本完成用户一套完整的操作,通过对脚本的回放来进行自动化测试。这是早期进行自动化测试的一种形式;我们在上一章中练习使用webdriver API 所编写的脚本也是这种形式。 脚本一 脚本二

通过上面的两个脚本,我们很明显的发现它的问题: 一个用例对应一个脚本,假如界面发生变化,用户名的属性发生改变,不得不需要对每一个脚本进行修改,测试用例形成一种规模,我们可能将大量的工作用于脚本的维护,从而失去自动化的意义。 这种模式下数据和脚本是混在一起的,如果数据发生变也也需要对脚本进行修改。 这种模式下脚本的可重复使用率很低。 模块化与库 我们会清晰的发现在上面的脚本中,其实有不少容是重复的;于是就有了下面的改进。 login.py quit.py 测试用例:

注意,上面代码并非完整代码,不能运行。 通过上面的代码发现,我们可以把脚本中相同的部分独立出来,形成模块或库;当脚本需要进行调用。这样做有两个好处: 一方面提高了开发效率,不用重复的编写相同的脚本;另一方面提高了代码的复用。 数据驱动 数据驱动应该是自动化的一个进步;从它的本意来讲,数据的改变(更新)驱动自动化的执行,从而引起结果改变。这显然是一个非常高级的概念和想法。 其实,我们能做到的是下面的形式。 d:\abc\data.txt

图4.x #coding=utf-8 from selenium import webdriver import os,time source = open("D:\\abc\\data.txt", "r") values = source.readlines() source.close() #执行循环 for serch in values: driver = webdriver.Firefox() driver.get(".xxxx.") driver.find_element_by_id("kw").send_keys(serch) ..... 不管我们读取的是txt 文件,还是csv、excel 文件的之类,又或者是数组、字典函数。我们实现了数据与脚本的分离,换句话说,我们实现了参数化。我们仍一千条数据,通过脚本的执行,可以返回一千条结果出来。 同样的脚本执行不同的数据从而得到了不同的结构。是不是增强的脚本的复用性呢! 其实,这对开发来说是完全没有什么技术含量的;对于当初QTP 自动化工具来说确是一个买点,因为它面对的大多是不懂开发的测试。

PYTHON测试题

1.what does the following code do?(B) def a(b, c, d): pass A.defines a list and initializes it B.defines a function, which does nothing C.defines a function, which passes its parameters through D.defines an empty class 2.what gets printed? Assuming python version 2.x(A) print type(1/2) A. B. C. D. E. 3. what is the output of the following code?(E) print type([1,2]) A. B. C. D. E. 4. what gets printed?(C) def f(): pass print type(f()) A. B. C. D. E. 5. what should the below code print?(A) print type(1J) A. B. C. D. E.

PYTHON自动化测试框架

之前有介绍过selenium的自动化测试框架,随着Python这种脚本语言的强大功能越来越被广大的程序员所重视,这种之前在国内流行度不高的语言近来气势高涨。各种第三方模块层出不穷。这里Jason介绍下之前用过的python自动化测试的一个框架PAMIE,留下点memory。 PAMIE(Python Automated Module For Internet Explorer),PAMIE它与selenium差不多,能让你如同写JS一样来操作IE浏览器。包括自动启动,访问链接,设置文本框值,获取按钮,执行点击事件,甚至执行页面JS方法等等。 首先我们需要PAMIE Package和您python版本对应的python win32扩展。 PAMIE我们能从这里下载。 python win32扩展我们能从这里下载。 在PAMIE压缩包中有相关的docs文件,介绍了PAMIE的API使用说明。2.X版本与3.x版本在引用的时候有稍许差异。这里简单的举个例子。 打开网页相关的网页: ie.navigate(‘url’) doc化ie frame然后运行相应的脚本 mainFrame=ie.getFrame(‘main’) pwindow=mainFrame.document.parentWindow pwindow.execScript(‘XXXX’) 通过DOM得到或者设置相应的值 doc.getElementById(‘XXXX’).value=XXXXX 填文本框 ie.setTextBox(‘firstname’,'FirstName’) ie.setTextBox(‘lastname’,'LastName’) 选择下拉菜单: ie.selectListBox(‘state’,”MS”) 方形选择框: ie.setCheckBox(‘cxbx’,1)#123或*号等都是“勾选”的意思”空字符串代表取消选择 圆形选择框: 这里选择Jazz ie.setRadioButton(“music”,”Jazz”)#music是这个选择列表的名字,从网页源代码里找出 最后提交按钮 ie.clickButton(“Submit”)

相关文档
最新文档