百科狗-知识改变命运!
--

使用Python自动化测试iOS项目

乐乐1年前 (2023-11-21)阅读数 39#技术干货
文章标签的是

作为一个开发人员,为了保证自己的代码的健壮,写单元测试是必不可少的环节,然而最痛快的是每天去手动跑一遍所有的case。那么什么能帮我们解决这些繁琐的操作呢,大家应该会想到自动化测试脚本了,是的,我们可以借助脚本来完成全自动化测试,下面是我列的每天脚本自动执行流程:

1、pullgit仓库里面的最新代码到本地。

2、然后打包成App。

3、安装到模拟器上。

4、运行App,执行单元测试,生成测试数据并保存到本地。

5、脚本读取测试数据,邮件发送给相关人员。

当这些全自动化后,可以大大减少开发人员的维护成本,即使每次项目里面有新增模块后,增加测试case就行了,下面会介绍自动测试这5步具体怎么去执行,整个脚本是使用Python写的,代码很少功能也很简单,但这已经可以帮我们完成基本的自动化测试了,这就是脚本的强大之处,选择Pyhton纯属个人喜好,最近也在学习Python,当然了最终使用什么语言看你自己。

python执行shell命令完成测试

首先确认本机上安装了git和python。

脚本判断本地是否存在项目,不存在则使用命令gitclone...,存在则使用命令gitpull...。

这些在Linux的命令都可以使用脚本来完成的,python的os.popen()方法就是可以在Linux上执行shell命令。

例如:把下面这段代码添加到一个test.py的文件里,然后在终端上执行pythontest.py命令你就会看到,你的当前目录下正在下载我的博客了。

importos

os.popen('gitclonehttps://github.com/leopardpan/leopardpan.github.io.git')

gitpull。。。更新代码也是一样的。

接下来的打包、安装、运行都是使用python执行shell命令

把iOS项目打包成App,下面的Demo是项目的名字

os.popen(‘xcodebuild-projectDemo.xcodeproj-targetDemo-configurationDebug-sdkiphonesimulator’)

这行脚本运行完成后,你就会发现同会生成一个build的文件夹。

Debug参数表示现在是Debug模式,如果Xcode里面改成Release了,这里需要改成Release。

xcodebuild命令是XcodeCommandLineTools的一部分。通过调用这个命令,可以完成iOS工程的编译,打包和签名过程。可以使用xcodebuild–help来看看具体有哪些功能。

打开iOS模拟器,这里运行的是iPhone6Plus你也可以换成其它型号的模拟器

os.popen(‘xcruninstruments-w“iPhone6Plus”’)

把刚才打包生成的App安装到模拟器上在安装之前要先卸载App,不然你运行的永远是最初安装的那个,后来安装的不会覆盖之前的,卸载App

os.popen(‘xcrunsimctluninstallbootedcom.test.Demo’)

booted后面接的是BundleIdentifier,我的是com.test.Demo,然后再安装App

os.popen(‘xcrunsimctlinstallbootedbuild/Debug-iphonesimulator/Demo.app‘)

booted后面接的是.app的路径,我打包的时候的是Debug,所以这个的文件夹名称是Debug-iphonesimulator。

在模拟器里运行App

os.popen(‘xcrunsimctllaunchbootedcom.test.Demo’)

booted后面接的是BundleIdentifier,我的是com.test.Demo。

使用Python自动化测试iOS项目

到目前为止,你就会发现你的项目已经运行起来了,你可以在项目是Debug模式下一启动就执行单元测试,然后把对应的测试数据保存到本地为data.json。然后在使用python脚本读取测试文件的数据,最终使用邮件发送给相关人员,pyhton读取数据很简单,一行代码就行

data=open(‘data.json’).read()

data里面就是json字符串,为了脚本操作简单,我在存储的时候直接把json格式的转成了字符串类型。

python发送邮件

我使用的是SMTP进行邮件发送的,SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件,具体代码如下:

fromemailimportencoders

fromemail.headerimportHeader

fromemail.mime.textimportMIMEText

fromemail.utilsimportparseaddr,formataddr

importsmtplib

defformat_addr(self,s):

name,addr=parseaddr(s)

returnformataddr((\

Header(name,'utf-8').encode(),\

addr.encode('utf-8')ifisinstance(addr,unicode)elseaddr))

defsend_mail(self,mail,message,title):

from_addr='leopardpan@163.com'

password=''

to_addr=mail

smtp_server='smtp.163.com'

msg=MIMEText(message,'plain','utf-8')

msg['From']=self.format_addr(u'自动化测试邮件

以上内容为大家介绍了使用Python自动化测试iOS项目,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:开发教育。http://www.baikegou.com/

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)