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() ...
随机推荐
- 给你推荐10款优秀的 HTML5 动画工具
HTML5 在过去三年快速增长,已经成为 Web 开发人员最喜欢的编程语言之一.强大的编程语言拥有开发更好的网页应用的能力. HTML5 中引入的新技术都非常好,像 Chrome.Firefox.Sa ...
- mysql行转列、列转行示例
最近在开发过程中遇到问题,需要将数据库中一张表信息进行行转列操作,再将每列(即每个字段)作为与其他表进行联表查询的字段进行显示. 借此机会,在网上查阅了相关方法,现总结出一种比较简单易懂的方法备用. ...
- MyGame--java语言编写的打飞机游戏(附源码下载)
运行效果如下图所示: 点击这里进行下载, 还有源码已经传至我的github上,还有一些小bug,欢迎大家改正. 说明:最后打boss的效果还没做,爆炸的图片也没好,欢迎大家修改.
- #8.11.16总结#CSS常用样式总结(二)
border 边框 简写:border:1px solid #000; 等效于:border-width:1px;border-style:solid;border-color:#000; 顺序:b ...
- js获取隐藏元素宽高的方法
网上有一些js获取隐藏元素宽高的方法,但是可能会存在某些情况获取不了. 例如: <!DOCTYPE html> <html lang="en"> <h ...
- YARN的内存和CPU配置
时间 2015-06-05 00:00:00 JavaChen's Blog 原文 http://blog.javachen.com/2015/06/05/yarn-memory-and-cpu- ...
- Android中的跨进程调用技术AIDL
什么是AIDL Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信. 为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用 ...
- android 切换fragment的两种方式
使用add方法切换时:载入Fragment1Fragment1 onCreateFragment1 onCreateViewFragment1 onStartFragment1 onResume用以下 ...
- iOS开发之百度地图的集成——地图标注&POI检索
本篇分为两部分: 一.地图标注 第一步:首先创建 BMKMapView 视图 第二步:在视图完全显示出来后设置,并实现代理方法 第三步:运行程序,此时大头针效果可以正常显示 二.POI检索 第一步:延 ...
- 学习Coding-iOS开源项目日志(一)
前言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的项目.本篇开始会陆续更新本人对github上开源的一个很不错的项目的一点点学习积累.也就是,探究着别人写的源码,我学到了 ...