python---接口测试实例
我们可以用Jmeter做接口测试,但是呢个人觉得那个有点局限性,用python就灵活很多,可以按自己的思路来构建比较灵活,下面给大家介绍一个简单的接口测试实例。
一、我们的思路如下:
首先我们要弄清楚我们的整个思路:
1.先把我们的测试数据准备好,即post的数据(当然get方法也可以发送请求数据)
2.然后我们向指定的URL发送请求(post方法)
3获取repones的结果数据,
4.判断repones结果是否有符合预期的数据
二、我这里举一个注册vpn账号的例子:
下面是我们要通过post方法请求的数据
Headers要先申明类型,然后通过requests.post方法向url发送数据请求。
三、请求数据后我们等待服务器响应,并且获取repones的数据
我们通过text方法获取到响应报文的内容,通过stauts_code获取响应的状态码
四、我们对获取到的报文做判断,是否含有预期的数据在里面
对code进行判断,是否为200,有则表示和服务器会话是正常的
对报文的内容进行判断,验证是否含有预期的数据
五、运行看结果
结果是ok的,可以注册成功
好,到这里我们一个简单的接口测试实例就讲完了。
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<=xpython 接口自动化、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/2611169841.html,/s/1hVd--DOvFNW-yhwNiSxmkg 提 取码: iyei 6. JDK最新下载地址: https://https://www.360docs.net/doc/2611169841.html,/java/technologies/javase-downloads.html 7. eclipse最新下载地址: https://https://www.360docs.net/doc/2611169841.html,/downloads/ 8. python最新下载地址: https://https://www.360docs.net/doc/2611169841.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.
A.
如何用 Python实现自动化测试
如何用 Python实现自动化测试 近期一直在看王阳明的相关书籍,他的一个观点我非常赞同,不管要学习什么一定要立志,立志是非常非常重要的,但是立志前一定要有动机,或者说要有"打击",那种让 你内心感到瓦凉瓦凉的打击!我在软件测试这个行业工作了12年之久,截至5年前,我 一直很愉悦地,内心充盈地做着黑盒测试,曾几何时我也觉得最好离"开发"远远的,因为 很多人都说:女孩子做测试挺好的~~ 但是,我遇到很一个非常现实而残忍的问题:"裁员",想想自己也挺奇葩的,在一个公司竟然待了12年之久,在这12年里,因为各种原因,我经历了大大小小的裁员有5次之多,一有裁员需求,老板第一个考虑的就是测试人员。每一次裁员,都是自己团队里的兄弟姐妹,我要亲自告诉他或她,因为公司现在裁员,需 要你离开公司,虽然你的工作是合格的,甚至是优秀的~~然后我要鼓起勇气陪着哭泣的他或她去立刻办理离职手续,一刻也不能停留~~你能想象我内心的崩溃吗?每一次我都会问为什么又是我们?每一次老板都会坦率地告诉我,为什么裁员考虑的是我们测试团队:就 是因为可取代性太强了!!我真的实实在在意识到了黑盒测试的无力。 公司在寒冬时,需要"蓄积能量",也就是需要减少开支,老板就要开始衡量,哪类研 发人员被裁,后续如果公司渡过难关后补起来比较容易,很不幸,每一次评估下来都是测 试人员。有个声音在我脑海里越来越清晰:不能这样,我们团队不能总是做可取代性强的 工作!!所以测试的发展方向是什么?我要有什么样的技能才能改观老板对我们的认知??我开始在网上找,当然也在51testing这样专业的网站上找寻,我找寻的结果是:未来的 测试应该是以自动化为主,手动测试为辅。所以测试人员必须要学会编程,因为测试是一 个无穷尽的工作,如何体现测试人员的价值,就是在单位时间内能有更多的产出,有让老 板瞠目结舌的产出!! 怎么学习Python在第二类问题中有详细说明,期间遇到的困难实在太多了,首要的 问题就是团队的信心不足,我们离开coding实在太久了,这个困难,我只能说,受到的 打击越大,越深,信心就会越足,容许我先哭一会~~ 除了这些形而上的困难,当然也有 实实在在的困难,我举一个实际且非常具体的问题:电脑1开发的脚本,可以正常运行,移植到电脑2就无法运行? 我们在开发时遇到上述问题,开发者开始一直纠结是电脑环境的问题,问题一直在发散,一直在发散,最后问题越来越复杂,搞到最后不可收拾......,最后他告诉我,这个开发任务无法进行@_@,这个小伙子成功在他的小主管的心里留下了:解决实际问题差的印象...... 他的问题在于没有回到问题的本质:Python的作用是定位,操作;就首先回到确认 窗口是否定位的思路上(当时他竟然还质疑他的小主管:窗口肯定定位了,因为在他的开 发电脑上都是定位的好好的*_*):真的发现窗口没有被成功定位。开发者就很困惑,为什么在电脑1是好的,电脑2就不行。他根本没想到是定位出的问题,所以连简单的确认动作也没做!然后再网上一通乱搜,真的越搜越晕,越搜问题越发散。
python实现接口测试
刚进一个新公司,可能要做接口测试,没有用过工具,抄了几行代码,根据自己的理解整理一下,供自己以后学习备用 贴上源码,也希望感兴趣的朋友一起讨论,mail: lnbcc0727@https://www.360docs.net/doc/2611169841.html, 使用说明:1.XML可以根据需要,组织测试案例, 2.EXCEL除了预期结果列要写上预期之外,其它列不用填写 3.源码实现执行XML案例,然后与EXCEL中预期做对比,最后将测试结果写入 EXCEL中(执行案例时不要打开EXCEL,以免影响写入操作) 一、XML案例源码(casedata.xml)
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.
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”)