Appium学习实践(三)测试用例脚本以及测试报告输出
之前Appium学习实践(二)Python简单脚本以及元素的属性设置中的脚本,会有一个问题,就是在每个测试用例完成之后都会执行tearDown,然后重新setUp,这样导致脚本的执行效率偏低,而且会有大量的重复性的步骤。当然有时测试脚本确实需要每次都重新开启一个干净的app。
下面说下怎样让一个测试用例执行完毕后接着执行后面的测试用例而不是重置。
#coding:utf-8
import unittest
import os
from selenium import webdriver
from time import sleep
import HTMLTestRunner
import time class Dttest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print('start setup')
desired_caps = {}
desired_caps['platformName'] = 'iOS'
desired_caps['deviceName'] = 'iPhone 5s' cls.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps) @classmethod
def tearDownClass(cls):
cls.driver.quit()
print('tearDown') def test_test(self):
sleep(10)
print('test passed') def test_click(self):
self.driver.find_element_by_name('point:').click()
sleep(5)
print('click passed') if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(Dttest('test_test'))
suite.addTest(Dttest('test_click'))
unittest.TextTestRunner(verbosity=2).run(suite)
这是使用的是Python的unittest中的setUpClass和tearDownClass,请见官方文档:https://docs.python.org/2/library/unittest.html
会先执行test_test,执行完毕后再执行test_click,两个测试用例执行完毕后再执行tearDownClass
----------------------------------------这里是分割线----------------------------------------
如果我们只能在命令行看到运行结果的话,有点不美,如果最后能有个report是不是能更好呢
下面来说下测试报告的输出,用的是HTMLTestRunner
代码如下
#coding:utf-8
import unittest
import os
from selenium import webdriver
from time import sleep
import HTMLTestRunner
import time class Dttest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print('start setup')
desired_caps = {}
desired_caps['platformName'] = 'iOS'
desired_caps['deviceName'] = 'iPhone 5s' cls.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps) @classmethod
def tearDownClass(cls):
cls.driver.quit()
print('tearDown') def test_slideAndPressSure(self):
sleep(10)
print('test passed') def test_click(self):
self.driver.find_element_by_name('point:').click()
sleep(5)
print('click passed') if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(Dttest('test_slideAndPressSure'))
suite.addTest(Dttest('test_click'))
#unittest.TextTestRunner(verbosity=2).run(suite)
timestr = time.strftime('%Y-%m-%d %X',time.localtime(time.time()))
filename = '/Users/lihui/Documents/PycharmProjects/test/report/'+timestr+'.html'
fp = open(filename,'wb')
runner = HTMLTestRunner.HTMLTestRunner(
stream=fp,
title='result',
description='report'
)
runner.run(suite)
fp.close()
最后会在我们设定的文件夹中生成一个以日期命名的html的报告,当然也可以自行改名(文件夹的名字先自己建好)
结果如下

感觉还是有点简陋。、后面再研究下
Ps:生成的报告中中文乱码,将HTMLTestRunner.py中的latin-1改成utf-8
最后附上Python unittest的中文文档地址http://pyunit.sourceforge.net/pyunit_cn.html#USING
Appium学习实践(三)测试用例脚本以及测试报告输出的更多相关文章
- Appium学习实践(四)结构优化
随着我们测试脚本中的用例越来越多,我们不可能将所有的用例都放在同一个脚本中,所以我们需要优化我们的结构.将脚本放在一个文件夹中,再通过别的脚本来执行脚本.这样,我们也可以有选择性的执行我们的脚本 先来 ...
- Appium学习实践(二)Python简单脚本以及元素的属性设置
1.简单的Python脚本 Appium中的设置与Appium学习实践(一)简易运行Appium中的一致 Launch后,执行脚本 #coding:utf-8 import unittest impo ...
- Appium学习实践(五)遇到的坑(记录自己工作中遇到的坑以及解决方案,不定时更新)
1.错误截图,有时候测试用例执行错误的话,相对于复杂的log,一张错误截图也许能更明确哪里出的问题(当然有时,截图+log还是最好了) 坑:本来是想测试用例fail的时候捕获异常来执行截图操作,但是由 ...
- JMeter学习(三十四)测试报告优化
如果按JMeter默认设置,生成报告如下: 从上图可以看出,结果信息比较简单,对于运行成功的case,还可以将就用着.但对于跑失败的case,就只有一行assert错误信息.(信息量太少了,比较难找到 ...
- Appium学习实践(一)简易运行Appium
环境: Appium 1.4.13 OS X 10.10.5 真机已安装app,或者未安装,通过ipa文件来安装,并启动Appium Inspector 点击Appium中的放大镜后,自动运行App ...
- appium学习【三】:截图时,图片命令中包含当前的函数名,以区分错误是在哪个函数报的
import sys funcName = sys._getframe().f_back.f_code.co_name #获取调用函数名 print sys._getframe().f_code.co ...
- 模板学习实践三 functor
#include <iostream>#include <typeinfo> void foo(){ std::cout << "foo() called ...
- airtest+poco多脚本、多设备批处理运行测试用例自动生成测试报告
一:主要内容 框架功能及测试报告效果 airtest安装.环境搭建 框架搭建.框架运行说明 airtest自动化脚本编写注意事项 二:框架功能及测试报告效果 1. 框架功能: 该框架笔者用来作为公司的 ...
- selenium webdriver学习(三)------------执行js脚本
selenium webdriver学习(三)------------执行js脚本 博客分类: Selenium-webdriver 在用selenium 1.X的时候常常会用到getEval() ...
随机推荐
- 编写更加稳定/可读的javascript代码
每个人都有自己的编程风格,也无可避免的要去感受别人的编程风格--修改别人的代码."修改别人的代码"对于我们来说的一件很痛苦的事情.因为有些代码并不是那么容易阅读.可维护的,让另一个 ...
- RPM命令学习
在centos中安装jdk,原本是要按照jdk1.7,结果装纯1.8,用的rpm安装包. 安装命令 rpm -ivh jdk-8u65-linux-x64.rpm 查询命令 rpm -qa|grep ...
- Java虚拟机JVM学习02 类的加载概述
Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...
- Android 抽屉效果的导航菜单实现
Android 抽屉效果的导航菜单实现 抽屉效果的导航菜单 看了很多应用,觉得这种侧滑的抽屉效果的菜单很好. 不用切换到另一个页面,也不用去按菜单的硬件按钮,直接在界面上一个按钮点击,菜单就滑出来,而 ...
- 【代码笔记】iOS-手机号验证
代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. // ...
- 小试SQL SERVER 2014 加密备份
数据库加密: http://blog.csdn.net/u012992506/article/details/25283035 create master key encrypti ...
- 安装php扩展
下面我以soap安装为例子 cd /home/zhangy/php-5.2.6/ext/soap /usr/local/php/bin/phpize#确定php-config文件在不在,调用php-c ...
- apache 日志轮询 linux cronolog
Linux下运行的Web服务器Apache,默认日志文件是不分割的,一个整文件既不易于管理,也不易于分析统计.安装cronolog后,可以将日志文件按时间分割,易于管理和分析. cronolog安装配 ...
- 什么是Java实例初始化块
在本篇文章,我将会使用一个例子展示什么是实例变量初始化块,实例初始化块和静态初始化块,然后说明在Java中实例初始化块是如何工作的. 执行顺序 查看下面的代码,你知道哪个先执行吗? package s ...
- Git笔记1
1.简介 1.1 GIT(分布式版本控制系统) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非 ...