Python自动化测试iOS项目

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

  • 1、pull git仓库里面的最新代码到本地。
  • 2、然后打包成App
  • 3、安装到模拟器上。
  • 4、运行App,执行单元测试,生成测试数据并保存到本地。
  • 5、脚本读取测试数据,邮件发送给相关人员。

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

python执行shell命令完成测试

首先确认本机上安装了gitpython
脚本判断本地是否存在项目,不存在则使用命令 git clone ... ,存在则使用命令 git pull ...
这些在Linux的命令都可以使用脚本来完成的,python的 os.popen() 方法 就是可以在Linux上执行shell命令。
例如: 把下面这段代码添加到一个 test.py 的文件里,然后在终端上执行 python test.py 命令你就会看到,你的当前目录下正在下载我的博客了。

import os

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

git pull 。。。 更新代码也是一样的。

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

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

  • os.popen(‘xcodebuild -project Demo.xcodeproj -target Demo -configuration Debug -sdk iphonesimulator’)

这行脚本运行完成后,你就会发现同会生成一个 build 的文件夹。
Debug参数表示现在是Debug模式,如果Xcode里面改成Release了,这里需要改成Release。
xcodebuild 命令是 Xcode Command Line Tools 的一部分。通过调用这个命令,可以完成 iOS 工程的编译,打包和签名过程。可以使用 xcodebuild –help 来看看具体有哪些功能。

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

  • os.popen(‘xcrun instruments -w “iPhone 6 Plus”’)

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

  • os.popen(‘xcrun simctl uninstall booted com.test.Demo’)

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

  • os.popen(‘xcrun simctl install booted build/Debug-iphonesimulator/Demo.app ‘)

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

在模拟器里运行App

  • os.popen(‘xcrun simctl launch booted com.test.Demo’)

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

到目前为止,你就会发现你的项目已经运行起来了,你可以在项目是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负责发送邮件,具体代码如下:

from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib

def format_addr(self,s):
    name, addr = parseaddr(s)
    return formataddr((
        Header(name, 'utf-8').encode(),
        addr.encode('utf-8') if isinstance(addr, unicode) else addr))

def send_mail(self, mail, message, title):
	from_addr = '[email protected]'
	password = ''
	to_addr = mail
	smtp_server = 'smtp.163.com'

	msg = MIMEText(message, 'plain', 'utf-8')
	msg['From'] = self.format_addr(u'自动化测试邮件 <%s>' % from_addr)
	msg['To'] = self.format_addr(u'管理员 <%s>' % to_addr)
	msg['Subject'] = Header(title, 'utf-8').encode()

	server = smtplib.SMTP(smtp_server, 25)
	server.set_debuglevel(1)
	server.login(from_addr, password)
	server.sendmail(from_addr, [to_addr], msg.as_string())
	server.quit()

send_mail('[email protected]','正文','标题')

from_addr是发送方的邮箱地址,password是开通SMTP时输入的密码
smtp_server是smtp的服务,如果你的from_addr是gamil.com,那么就要写成smtp_server = ‘smtp.gmail.com’ 了。

方法 send_mail(self, mail, message, title): 有四个参数,第一个不用传,第二个参数是收信人的邮箱,第三个是邮件的正文,第四个是邮件的标题,方法调用格式: send_mail('[email protected]','正文','标题')

注意:发送方的邮箱必须要开通SMTP功能才行,否则会报错

  • SMTPSenderRefused: (550, ‘User has no permission’, ‘[email protected]’)

163的SMTP开通,需要你登录网易邮箱,然后点击顶部的设置就会出现POP3/SMTP/IMAP,点击之后,勾选选择开启,这个时候需要你输入密码,记住这个密码就是上面代码中的password,如果你都完成的话,你把上面的代码拷贝出现,把邮箱修改成你自己的,使用 pyhton 运行一下吧。

上面的几个流程结合起来就可以实现一个简单的自动化测试了,如果你有什么建议和意见欢迎讨论。

参考链接:
SMTP发送邮件

转载请注明:潘柏信的博客 ? 点击阅读原文

Newsletter

Subscribe here to get our latest updates

Email Address

Please enable JavaScript to view the comments powered by Disqus.

原文:大专栏  Python自动化测试iOS项目

原文地址:https://www.cnblogs.com/chinatrump/p/11614886.html

时间: 2024-10-08 17:54:35

Python自动化测试iOS项目的相关文章

为iOS项目添加Daily Build

很多人在说到Daily Build的时候总是喜欢背书.背书就背书吧,总比混迹软件行业连书都没看过的强.很久以前遇到一个奇葩.每次到代码提交测的通知就着急忙慌的催促组员赶紧干活,开始严重加班,晚饭都不吃...偶尔还需要开通宵.但是即使如此,最后也不会得到什么好的反馈.那个team就是这样循环往复的做着项目,直到永恒.如果项目的相关人员能背背敏捷什么的开发书籍,想必情况总能有所改善. 相信以上情况各位多少都遇到过,那么Daily Build为什么会对这样的情况有所改善呢? 快速定位错误.那天的Dai

python自动化测试应用-第7篇(WEB测试)--Selenium进阶篇

篇7                            python自动化测试应用-Selenium进阶篇 --lamecho 1.1概要 大家好!我是lamecho(辣么丑),本篇文章将是我们介绍selenium使用的最后一篇进阶篇,会给大家带来一些干货帮助大家能够处理在实战中碰到的实际问题. 1.2 selenium继续实战百度页面 我们继续以百度作为实战的对象.通过上一篇的讲解,我们大概知道了网页元素的基本知识和对一些常见元素类型的操作,比如按钮,input输入框,链接等其实只要大家仔

开源 iOS 项目分类索引大全

GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Category类型的库,附带很多自定义控件 功能不错- BlocksKit 将Block风格带入UIKit和Founcation cocoa-helpers 一些Cocoa的扩展 2年前的工程 CoconutKit 一系列扩展和一些自定组件 STUtils 一系列扩展包 PSFoundation 一系列扩展 和功能增强 ConciseK

python自动化测试(2)-自动化基本技术原理

python自动化测试(2) 自动化基本技术原理 1   概述 在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据. 掌握上面的这样的本领可不是容易的事情,必须要有扎实的计算机理论基础,才能看到深层次的本质东西. 2   应用软件逻辑结构 数据库应用系统 可能是最典型的网络应用程序了,关于它的软件架构如下: 一般在逻辑上分为4层: 用户界面层 UI 为终端用户提供交互的人机界面 业务逻辑层 BLL 将数据库抽象出来的对象进行拼接成具体

python自动化测试

python自动化测试 欢迎光临 python自动化测试 小站! 小站基于IT行业,重点关注python,软件自动化测试,测试等. 联系方式 飞信 372818219 相关的群:python开发自动化测试群113938272和开发测试群6089740. 小站运行于新浪云平台SAE,基于python的知名流程管理工具Trac.暂时主要使用其博客功能. 未来拟基于Trac迁移和创建一些开源项目,增加使用wiki,任务单,时间线等功能. 目前的开源项目项目:python中文翻译和实例:??http:/

selenium + python自动化测试unittest框架学习(二)

1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py >test_case >__init__.py >test_case1..... >public >__init__.py >login.py >loginout.py test_case文件夹主要存放测试用例,且测试用例命名以test_开头 public文件夹是test

python自动化测试三部曲之untitest框架

终于等到十一,有时间写博客了,准备利用十一这几天的假期把这个系列的博客写完 该系列文章本人准备写三篇博客 第一篇:介绍python自动化测试框架unittest 第二篇:介绍django框架+request库实现接口测试 第三篇:介绍利用Jenkins实现持续集成 今天进入第一篇,unittest框架介绍 一.unittest简述 unittest是python语言的单元测试框架,在python的官方文档中,对unittest单元测试框架进行了详细的介绍,感兴趣的读者可以到https://www

《Python自动化测试实战》终于出版!!!

一.为什么会写这本书 1.系统梳理.可以加深对测试知识体系的系统梳理 2.名气.增加个人的名气,比如:面试时,可以很自豪的说,我是xxxx书的作者 3.利他.帮助有需要的学习者更系统.完备的学习和进阶 4.自我价值的实现.看到自己写的书,非常有成就感 5.符合笔者一直遵循的原则:坚持开源.拥抱开源精神 6.打破行业内的一些怪象.写一些真正实用.行业内未曾公开的测试技术 6.年迈之际,回想当年.感动自己,永远热泪盈眶 二.本书封面设计 一本好书,不仅内容要实用.丰富.当然,书外观的设计封面.纸张印

《自拍教程》Python自动化测试学习思路

前提:熟悉测试业务及流程 任何Python自动化测试的前提,都是必须先熟悉实际测试业务. 任何脱离实际测试业务的自动化都是噱头且无实际意义! 测试的基本流程基本是: 测试需求分析,测试用例设计与评审,测试用例执行,报bug,整理测试报告. 测试用例设计与评审是熟悉软件产品需求的重要过程, 可以更深入地了解软件产品的具体需求. 先掌握手动执行用例 用例设计及评审结束后,先学会手动执行测试用例, 通过手动执行用例,也可以更好的了解软件产品的具体需求, 并学会总结归纳不同的测试类型的用例. 比如性能测