appium+python自动化项目实战(一):引入nose和allure框架

本文将介绍一套比较完整的appium自动化框架,以python为编写脚本语言,是因为python有强大的库,同时易学易懂。

最终的测试框架代码,将在jenkins项目中一键构建,执行自动化测试用例,并输出展现形式丰富的测试报告。

appium及python的环境,自行安装和配置,本人使用pycharam进行自动化开发。

一、安装nose及依赖库

  • pip install nose
  • pip install nose-allure-plugin
  • pip install nose-html-reporting
  • pip install nose-ittr
  • pip install nosehtmlouput-2

二、安装allure及依赖库

  • pip install allure-behave
  • pip install allure-python-commons

三、编写测试用例

import unittest
import nose
from nose.tools import *
import logging
from page.common.tab_bar_page import TabBarPage
from page.video.video_tab_bar_page import VideoTabBarPage
from common.common_operate import *class TestVideoTabBar(unittest.TestCase):log = logging.getLogger(__name__)@classmethoddef setUpClass(cls):cls.tab_bar = TabBarPage()cls.tab_bar.click_vedio_tab_bar()cls.video_tab_bar = VideoTabBarPage()def setUp(cls):pass# 点击视频文章标题@nose.allure.feature('视频Tab')@nose.allure.story('点击标题-查看视频文章')def test_01_click_video_title(self):try:self.video_tab_bar.click_video_title(0)assert_true(is_visibility(self.video_tab_bar.video_article_comments_btn_loc))except TimeoutException as e:take_screenShot(u"点击标题-查看视频文章'")logging.error(e)assert_false(True)# 点击视频预览图@nose.allure.feature('视频Tab')@nose.allure.story('点击视频预览图-查看视频文章')def test_02_video_preview(self):try:self.video_tab_bar.click_video_preview(0)assert_true(is_visibility(self.video_tab_bar.video_article_list_comments_btn_loc))except TimeoutException as e:take_screenShot(u"点击视频预览图-查看视频文章'")logging.error(e)assert_false(True)def tearDown(cls):get_press_keycode(4)@classmethoddef tearDownClass(cls):time.sleep(3)get_press_keycode(4)

 

这里先贴一下测试用例脚本,后面会介绍自动化项目代码、设计、运行原理等。

转载于:https://www.cnblogs.com/luihengk/p/11413940.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle监听器—静态注册

注册就是将数据库作为一个服务注册到监听程序。客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库。这个服务名可能与实例名一样,也有可能不一样。 注册分: 1. 静态注册 2. 动态注册 静态注册 为…

LeetCode445——Add Two Numbers II(两个链表数据相加(从链表尾部开始),返回新链表)

题目: 参考解法: /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l…

linux下制作codeblocks绿色版,并集成devhelp

Codeblocks更新到12.11了,可是软件中心还是10.01的.在codeblocks的官网找了一下发现了ubnutu的ppa, sudo apt-add-repository ppa:pasgui/ppa,可是不知道是否和以前的配置冲突,还是其它原因,编辑器居然没有多标签.于是想做一个绿色试试.到其wiki上以portable搜索 果然找到了方法…

appium+python自动化项目实战(二):项目工程结构

废话不多说,直接上图: nose.cfg配置文件里,可以指定执行的测试用例、生成测试报告等。以后将详细介绍。 转载于:https://www.cnblogs.com/luihengk/p/11414208.html

大数据批量插入小练习_SqlServer

这几天把sqlserver批量插入也整理了一下,性能方面有很大的提高,下面直接上代码using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.IO;using System.Threading;using Syste…

LeetCode371——Sum of Two Integers(不用+)

class Solution { public:int getSum(int a, int b) {int sum a;while (b ! 0){sum a ^ b;//calculate sum of a and b without thinking the carry b (a & b) << 1;//calculate the carrya sum;//add sum(without carry) and carry}return sum;} };

使用NSOperation为你的app加速

app store中的很多应用程序非常的笨重&#xff0c;他们有好的界面&#xff0c;但操作性很差&#xff0c;比如说当程序从网上或本地载入数据的时候&#xff0c;界面被冻结了&#xff0c;用户只能等程序完全载入数据之后才能进行操作。当打开一个应用程序时&#xff0c;iphone会产…

短链接生成API

一、腾讯&#xff1a;Url.Cn GET http://api.t.sina.com.cn/short_url/shorten.json?source3271760578&url_long<https://www.domain.cn/> 二、新浪&#xff1a;t.Cn GET http://sa.sogou.com/gettiny?url<https://www.domain.cn/> 三、百度&#xff1a;dwz.…

LeetCode43——Multiply Strings(两个字符串表示的整数相乘)???

题目&#xff1a; 参考解法&#xff1a; 法一&#xff1a; This is the standard manual multiplication algorithm. We use two nested for loops, working backward from the end of each input number. We pre-allocate our result and accumulate our partial result in …

关键字restrict简介

c99中新增加了一个类型定义&#xff0c;就是restrict。 restrict的定义是It can be applied only to pointers, and it indicates that a pointer is the sole initial means of accessing a data object. 我不知道确切应该怎么翻译&#xff0c;大意是restrict只对指针有用&…

Windows-server-2008-R2安装Oracle-11g-R2-dataguard

一、安装环境 1、服务器环境&#xff1a;Windows server 2008 R2 x64 Standard 两台 CPU&#xff1a;8核 内存&#xff1a;8G 硬盘空间&#xff1a;1060G 2、软件&#xff1a;oracle 11g R2 二、安装前配置 1、IP地址配置要求 主库IP&#xff1a;192.168.2.50 备库IP&#xff1…

LeetCode66——Plus One(一个整数用数组存储,然后在末尾加1)

题目&#xff1a; 参考解法&#xff1a; class Solution { public:vector<int> plusOne(vector<int>& digits) {bool carry true;for(int idigits.size()-1; i > 0 && carry; i--) {carry (digits[i]%10) 0;}if(carry) {digits.insert(digits.be…

项目中CI缓存适配器的使用

2019独角兽企业重金招聘Python工程师标准>>> 项目中CI缓存适配器的使用 项目中有若干控制器&#xff0c;这些控制器有一些公共数据&#xff0c;因此&#xff0c;在基控制器类中获取这些数据&#xff0c;为了提高系统性能&#xff0c;使用了缓存系统&#xff0c;采…

VS2008中V表结束标记的分析

VS2008中V表结束标记的分析 在逆向C目标时&#xff0c;我们有时候可能会关注一个V表中到底有多少个虚函数。 这种细节大概多半是与编译器实现相关。 为了弄清楚这个问题&#xff0c;我在VS2008下写了一个简单的测试程序来探求这个问题的答案。 下面是C的测试程序源码&#xff1…

康奈尔笔记法

一页有三栏&#xff1a;主栏、副栏、思考栏。主栏主要是在右上角&#xff0c;主要记录学到的内容。副栏在左边&#xff0c;主要是简单概括重点。思考栏在底部&#xff0c;主要是记录收获、感悟。 主栏&#xff1a;在听讲或阅读时把重要的内容或知识的要点记录在右侧的区域&…

string类的常用函数

string类的构造函数&#xff1a; string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外&#xff0c;string类还支持默认构造函数和复制构造函数&#xff0c;如string s1&#xff1b;string s2"hello"&#xff1b;都是正…

Memcached 内存管理(一)

2019独角兽企业重金招聘Python工程师标准>>> Memcached是一个高效的分布式内存cache&#xff0c;了解memcached的内存管理机制&#xff0c;便于我们理解memcached&#xff0c;让我们可以针对我们数据特点进行调优&#xff0c;让其更好的为我所用。这里简单谈一下我对…

相同字符串的string对象不等

今天遇到一个问题&#xff0c;用复制构造函数构造出来的String和同一个字符串的string对象居然不相等&#xff0c;即A和B是相同字符串的string,调用Cstring(A)之后&#xff0c;C和B不相等。 后来改成C string(A.c_str())后&#xff0c;C和B才相等转载于:https://www.cnblogs.c…

jitter 如何优化网络_网络推广如何做好网站SEO优化

网络推广做好网站整站SEO优化的方式有很多&#xff0c;如何才能做好SEO优化&#xff1f;网络推广如何做好网站SEO优化一、定位网站关键词SEO给一个网站刚开始做优化的时候&#xff0c;不是立马就设置关键词&#xff0c;而是先分析该网站主要是做什么产品/服务。知道网站的目的是…

PHP+Mysql查询上一篇和下一篇文章实例

PHPMysql查询上一篇和下一篇文章实例 简单的PHPMysql查询上一篇和下一篇文章实例&#xff0c;并输出上一篇和下一篇文章的标题和链接&#xff0c;适合新手学习获取当前浏览文章id&#xff1a; 1 $id isset($_GET[id]) > 0 ? intval($_GET[id]) : ""; 下一篇文章…