测试新人如何使用Python代码封装自动化测试的用例

测试新人如何使用Python代码封装自动化测试的用例,第1张

如何使用Python和Nose实现自动化测试

本文我将详细介绍使用Appium下的Python编写的测试的例子代码对一个iOS的样例应用进行测试所涉及的各个步骤,而对Android应用进行测试所需的步骤与此非常类似。

然后按照安装指南,在你的机器上安装好Appium。

我还需要安装Appium的所有依赖并对样例apps进行编译。在Appium的工作目录下运行下列命令即可完成此任务:

$ /resetsh --ios

编译完成后,就可以运行下面的命令启动Appium了:

$ grunt appium

现在,Appium已经运行起来了,然后就切换当前目录到sample-code/examples/python。接着使用pip命令安装所有依赖库(如果不是在虚拟环境virtualenv之下,你就需要使用sudo命令):

$ pip install -r requirementstxt

接下来运行样例测试:

$ nosetests simplepy

既然安装完所需软件并运行了测试代码,大致了解了Appium的工作过程,现在让我们进一步详细看看刚才运行的样例测试代码。该测试先是启动了样例应用,然后在几个输入框中填写了一些内容,最后对运行结果和所期望的结果进行了比对。首先,我们创建了测试类及其setUp方法:

classTestSequenceFunctions(unittestTestCase):

defsetUp(self):

app=ospathjoin(ospathdirname(__file__),

'//apps/TestApp/build/Release-iphonesimulator',

'TestAppapp')

app=ospathabspath(app)

selfdriver=webdriverRemote(

command_executor='127001:4723/wd/hub',

desired_capabilities={

'browserName':'iOS',

'platform':'Mac',

'version':'60',

'app': app

})

self_values=[]

“desired_capabilities”参数用来指定运行平台(iOS 60)以及我们想测试的应用。接下来我们还添加了一个tearDown方法,在每个测试完成后发送了退出命令:

deftearDown(self):

selfdriverquit()

最后,我们定义了用于填写form的辅助方法和主测试方法:

def_populate(self):

# populate text fields with two random number

elems=selfdriverfind_elements_by_tag_name('textField')

foreleminelems:

rndNum=randint(0,10)

elemsend_keys(rndNum)

self_valuesappend(rndNum)

deftest_ui_computation(self):

# populate text fields with values

self_populate()

# trigger computation by using the button

buttons=selfdriverfind_elements_by_tag_name("button")

buttons[0]click()

# is sum equal

texts=selfdriverfind_elements_by_tag_name("staticText")

selfassertEqual(int(texts[0]text),self_values[0]+self_values[1])

本文介绍到此,相信很多朋友都已经明白了。但是如果你对Nose和Python来运行Appium测试有任何问题或看法,可以给我留言,我们可以继续交流。

简答:

经过实际测试,PyInstaller很好用。

无法繁琐的配置,加上一个-F,就可以直接生成单一的exe文件。

效果很爽。

py2exe,没用过,但是看到网上教程,就是需要复杂配置和折腾的。

所以说PyInstaller比py2exe,好用多了。

详解:

记录把Python代码的BlogsToWordPress打包成exe可执行文件

(此处不给贴地址,请自己用google搜标题,即可找到帖子地址)

python的用途:

python也是一门程序语言。能写各种各样的程序。

优点:

1支持OOP编程从根本

上讲Python仍是一种面向对象的语言,支持多态、继承等高级概念,在Python里使用OOP十分容易没有C++、Java那样复杂,但不必做Python下OOp高手,够用即可。

2免费Python的使用是完全免费的,您可以从网络上免费下载、安装使用,Python上的其他程序包,也可下载安装使用。Python的免费的同时又有很多的的社区对用户的提问提出快速的技术支持,学习和使用Python技术不再是一个人在战斗!

3可移植性Python的实现是用ansic编写的,可以运行在目前所有主流平台上,手机、pad上均可运行Python程序,其下的程序包也具有可移植性。

4功能强大从特性的观点上看,Python是一个混合体,他丰富的工具集使得他介于传统的脚本语言和系统语言之间。

设计定位

Python的设计哲学是"优雅"、"明确"、"简单"。因此,Perl语言中"总是有多种方法来做同一件事"的理念在Python开发者中通常是难以忍受的。Python开发者的哲学是"用一种方法,最好是只有一种方法来做一件事"。

在设计Python语言时,如果面临多种选择,Python开发者一般会拒绝花俏的语法,而选择明确的没有或者很少有歧义的语法。由于这种设计观念的差异,Python源代码通常被认为比Perl具备更好的可读性,并且能够支撑大规模的软件开发。这些准则被称为Python格言。在Python解释器内运行importthis可以获得完整的列表。

Python开发人员尽量避开不成熟或者不重要的优化。一些针对非重要部位的加快运行速度的补丁通常不会被合并到Python内。所以很多人认为Python很慢。不过,根据二八定律,大多数程序对速度要求不高。在某些对运行速度要求很高的情况,Python设计师倾向于使用JIT技术,或者用使用C/C++语言改写这部分程序。可用的JIT技术是PyPy。

Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools,itertools)提供了Haskell和StandardML中久经考验的函数式程序设计工具。

虽然Python可能被粗略地分类为"脚本语言"(scriptlanguage),但实际上一些大规模软件开发计划例如Zope、Mnet及BitTorrent,Google也广泛地使用它。Python的支持者较喜欢称它为一种高级动态编程语言,原因是"脚本语言"泛指仅作简单程序设计任务的语言,如shellscript、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。

Python本身被设计为可扩充的。并非所有的特性和功能都集成到语言核心。Python提供了丰富的API和工具,以便程序员能够轻松地使用C语言、C++、Cython来编写扩充模块。Python编译器本身也可以被集成到其它需要脚本语言的程序内。

因此,很多人还把Python作为一种"胶水语言"(gluelanguage)使用。使用Python将其他语言编写的程序进行集成和封装。在Google内部的很多项目,例如GoogleEngine使用C++编写性能要求极高的部分,然后用Python或Java/Go调用相应的模块。

Python:常用函数封装:

def is_chinese(uchar):

"""判断一个unicode是否是汉字"""

if uchar >= u'\u4e00' and uchar<=u'\u9fa5':

return True

else:

return False

def is_number(uchar):

"""判断一个unicode是否是数字"""

if uchar >= u'\u0030' and uchar<=u'\u0039':

return True

else:

return False

def is_alphabet(uchar):

"""判断一个unicode是否是英文字母"""

if (uchar >= u'\u0041' and uchar<=u'\u005a') or (uchar >= u'\u0061' and uchar<=u'\u007a'):

return True

else:

return False

def is_other(uchar):

"""判断是否非汉字,数字和英文字符"""

if not (is_chinese(uchar) or is_number(uchar) or is_alphabet(uchar)):

return True

else:

return False

def B2Q(uchar):

"""半角全角"""

inside_code=ord(uchar)

if inside_code<0x0020 or inside_code>0x7e: #不是半角字符就返回原来的字符

return uchar

if inside_code==0x0020: #除了空格其他的全角半角的公式为:半角=全角-0xfee0

inside_code=0x3000

else:

inside_code+=0xfee0

return unichr(inside_code)

def Q2B(uchar):

"""全角转半角"""

inside_code=ord(uchar)

if inside_code==0x3000:

inside_code=0x0020

else:

inside_code-=0xfee0

if inside_code<0x0020 or inside_code>0x7e: #转完之后不是半角字符返回原来的字符

return uchar

return unichr(inside_code)

def stringQ2B(ustring):

"""把字符串全角转半角"""

return ""join([Q2B(uchar) for uchar in ustring])

def uniform(ustring):

"""格式化字符串,完成全角转半角,大写转小写的工作"""

return stringQ2B(ustring)lower()

def string2List(ustring):

"""将ustring按照中文,字母,数字分开"""

retList=[]

utmp=[]

for uchar in ustring:

if is_other(uchar):

if len(utmp)==0:

continue

else:

retListappend(""join(utmp))

utmp=[]

else:

utmpappend(uchar)

if len(utmp)!=0:

retListappend(""join(utmp))

return retList

使用Python代码封装自动化测试的用例, 意味着将代码封装到一个整体中, 在python中面向对象的编程思维方式是最适合封装了:

①把测试的数据和测试的过程封装到类的内部成为一个整体, 便于测试数据和测试流程的管理维护;

②Python中面向对象封装的特性有利于隐藏内部实现的复杂度, 对于调用者来说直接调用即可 ;

③Python面向对象中的类,是实现封装最佳体现, 把数据和对数据的 *** 作封装在类的内部,, 对数据起到保护作用, 提高了代码的安全性和健壮性;

④Python中面向对象的编程模式体现了模块化的思想, 模块可以重用, 模块容易扩展, 简化测试的流程, 提高测试的效率。

更高效的编写实现自动化测试用例,Python中面向对象编程思维方式是必须掌握的,亲戚在传智播客学的软件测试,现在月薪13K。

以上就是关于测试新人如何使用Python代码封装自动化测试的用例全部的内容,包括:测试新人如何使用Python代码封装自动化测试的用例、如何把python封装成exe、python的用途和优点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10214544.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存