上回书说到 macaca 测试web(2)  使用ddt做参数驱动化, 有些人会说,你好low,我说怎么low呢,他说你看看你的脚本就放在一个文件里,对于我们小白来说,这看起来很乱啊,能不能给我拆分,拆分,于是乎,你有需求,我有方案,你有你的需求,我有我的方案,我的方案会满足你的需求, 你是产品经理,我是测试,我来给你拆分,拆分,

那么我们先看看上节课的脚本,

import unittest
from macaca import WebDriver
import time
import BSTestRunner
import ddt
login_data=[
{'username':'北漂的','password':'li1213456','id':'tip_btn','assert':'该用户不存在'},
{'username':'','password':'li123456','id':'tip_input1','assert':'请输入登录用户名'},
{'username':'','password':'','id':'tip_input1','assert':'请输入登录用户名'},
{'username':'','password':'li123456','id':'tip_input1','assert':'请输入登录用户名'},
{'username':'北漂的雷子','password':'li123456','id':'tip_btn','assert':'用户名或密码错误'},
{'username':'北漂的雷子','password':'','id':'tip_input2','assert':'请输入密码'},
{'username':'北漂的雷子','password':'####','id':'feed_recent','assert':'最新动态'},]
die_arp={
'platformName':'Desktop',
'browserName':'electron'
}
server_url={
'hostname':'localhost',
'post':3456
}
@ddt.ddt
class BokeyuanTest(unittest.TestCase):
def setUp(self):
self.deriver=WebDriver(die_arp,server_url)
self.deriver.init()
self.deriver.get('https://passport.cnblogs.com/user/signin')
def tearDown(self):
self.deriver.quit()
@ddt.data(*login_data)
def test_login(self,login_data):
self.deriver.element_by_id('input1').send_keys(login_data['username'])
self.deriver.element_by_id('input2').send_keys(login_data['password'])
self.deriver.element_by_id('signin').click()
time.sleep(1)
self.assertTrue(self.deriver.element_by_id(login_data['id']).text,login_data['assert'])
if __name__ == '__main__':
suite = unittest.TestSuite()
now = time.strftime('%Y-%m%d', time.localtime(time.time()))
report_dir = r'%s.html' % now
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(BokeyuanTest))
re_open = open(report_dir, 'wb')
runner = BSTestRunner.BSTestRunner(stream=re_open, title='demo by macaca', description='测试结果')
runner.run(suite)

哪里能拆,哪里能拆,雷子你又骗我,我没有,来来,我给你分析分析,die_arp,server_url,login_data这个是不是参数的,那么我们可不可以对这个进行拆分呢,答案是肯定的,是可以的,那么来来,我们来看看,看看我的拆分思路,

创建一个新文件,我给他起名config.py

来来上config.py的代码

die_arp={
'platformName':'Desktop',
'browserName':'electron'
}
server_url={
'hostname':'localhost',
'post':3456
}
login_data=[
{'username':'北漂的','password':'li1213456','id':'tip_btn','assert':'该用户不存在'},
{'username':'','password':'li123456','id':'tip_input1','assert':'请输入登录用户名'},
{'username':'','password':'','id':'tip_input1','assert':'请输入登录用户名'},
{'username':'','password':'li123456','id':'tip_input1','assert':'请输入登录用户名'},
{'username':'北漂的雷子','password':'li123456','id':'tip_btn','assert':'用户名或密码错误'},
{'username':'北漂的雷子','password':'','id':'tip_input2','assert':'请输入密码'},
{'username':'北漂的雷子','password':'####','id':'feed_recent','assert':'最新动态'},]

哦哦,这样啊,那你来给我看看你的脚本

来来,脚本来了

from macaca import WebDriver
import unittest
import HTMLTestRunner,time
import ddt
from config import die_arp,server_url,login_data
@ddt.ddt
class BokeyuanTest(unittest.TestCase):
def setUp(self):
self.deriver=WebDriver(die_arp,server_url)
self.deriver.init()
self.deriver.get('https://passport.cnblogs.com/user/signin')
def tearDown(self):
self.deriver.quit()
@ddt.data(*login_data)
def test_login(self,login_data):
self.deriver.element_by_id('input1').send_keys(login_data['username'])
self.deriver.element_by_id('input2').send_keys(login_data['password'])
self.deriver.element_by_id('signin').click()
time.sleep(1)
self.assertTrue(self.deriver.element_by_id(login_data['id']).text,login_data['assert'])
if __name__ == '__main__':
suite = unittest.TestSuite()
now = time.strftime('%Y-%m%d', time.localtime(time.time()))
report_dir = r'%s.html' % now
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(BokeyuanTest))
re_open = open(report_dir, 'wb')
runner = HTMLTestRunner.HTMLTestRunner(stream=re_open, title='demo by macaca', description='测试结果')
runner.run(suite)

小伙伴书,我不信,你这么运行可以成功,来来,代码来了,小伙子,看好了,光说你不信,来来,run一下

oh,这成功了吗,不信,你给我看看你的测试报告

看到了吗,还信不信,满足不满足你的需求,不满足,不满足,那你要干啥,那不是还有可以提出来的吗,哪里,哪里告诉我,我看到了,我看到了,定位的,定位的。

oo 那么我们再来建一个新的文件,我们叫他page.py,上代码,这么简单

page_data={
'username':'input1',
'password':'input2',
'login':'signin',
}

那你来让我看看你的代码,来来,代码来了

from macaca import WebDriver
import unittest
import HTMLTestRunner,time
import ddt
from config import die_arp,server_url,login_data
from page import page_data
@ddt.ddt
class BokeyuanTest(unittest.TestCase):
def setUp(self):
self.deriver=WebDriver(die_arp,server_url)
self.deriver.init()
self.deriver.get('https://passport.cnblogs.com/user/signin')
def tearDown(self):
self.deriver.quit()
@ddt.data(*login_data)
def test_login(self,login_data):
self.deriver.element_by_id(page_data['username']).send_keys(login_data['username'])
self.deriver.element_by_id(page_data['password']).send_keys(login_data['password'])
self.deriver.element_by_id(page_data['login']).click()
time.sleep(1)
self.assertTrue(self.deriver.element_by_id(login_data['id']).text,login_data['assert'])
if __name__ == '__main__':
suite = unittest.TestSuite()
now = time.strftime('%Y-%m%d', time.localtime(time.time()))
report_dir = r'%s.html' % now
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(BokeyuanTest))
re_open = open(report_dir, 'wb')
runner = HTMLTestRunner.HTMLTestRunner(stream=re_open, title='demo by macaca', description='测试结果')
runner.run(suite)

config.py保持不变

来来,小伙运行下:

我要看测试报告

小伙你弄的不错了,小伙,今天的需求到这里,到这里,你可以下班休息了。

oo,太让我开心了。、

 

macaca 测试web(3)的更多相关文章

  1. macaca测试web小例子

    上午刚把macaca的环境在公司的电脑上吧web 端的环境给搭建好,于是乎,看看网上的例子,看看官方的文档 https://macacajs.github.io/wd.py/ 可以在这个链接看到原滋原 ...

  2. macaca 测试web(2)

    还是以博客园登录为例, 可以查看上一篇上一篇 这次只测试登录,使用ddt的数据驱动,这里我博客也有记录 地址 其实我在uiautomator +python 实现安卓自动化 一文当中我已经使用过ddt ...

  3. Robot Framework--13 RFS+AutoItLibrary测试web上传下载

    转自:http://blog.csdn.net/tulituqi/article/details/21888059 Selenium2library在我们实际测试web页面的时候基本上已经够用了,不过 ...

  4. Robot Framework--12 RFS+AutoItLibrary测试web对话框

    转自:http://blog.csdn.net/tulituqi/article/details/21871247 Selenium2library在我们实际测试web页面的时候基本上已经够用了,不过 ...

  5. 利用SoapUI 测试web service的方法介绍

    1. 简介 SoapUI是用java开发的测试web service的工具. 2. 安装 2.1. 下载地址 http://www.soapui.org/ 2.2. 安装 By downloading ...

  6. 使用QTP测试Web对象

    加载Web插件先启动QTP,再启动浏览器,否则Web元素识别不了最新版本QTP11支持的浏览器:IE:6.7.8Firefox:3.0.x.3.5.QTP支持直接访问DOM(Document Obje ...

  7. [转载]Macaca 测试 Android 应用:UIAutomator

    在用macaca进行自动化测试,想试一下移动端测试,看到这篇文章,尝试一下. 前言 用 Macaca 可以快速.便捷地进行安卓 native 的自动化测试,用简洁的 js 语法,写下用例,然后执行 M ...

  8. 使用SoapUI 测试Web Service

    原文:使用SoapUI 测试Web Service 如何测试写好的Webservice?你当然可以写代码来测试,但还是太麻烦,你得花时间去学习各语言的关于Webservice调用的相关API.这里推荐 ...

  9. 利用python httplib模块 发送Post请求测试web服务是否正常起来!

    最近在学习python,恰好老大最近让我搞个基于post请求测试web服务是否正常启用的小监控,上网查了下资料,发现强大的Python恰好能够用上,所以自己现学现卖,顺便锻炼下自己. 由于本人也刚接触 ...

随机推荐

  1. (转)CentOS6.5下Redis安装与配置

    场景:项目开发中需要用到redis,之前自己对于缓存这块一直不是很理解,所以一直有从头做起的想法. 本文详细介绍redis单机单实例安装与配置,服务及开机自启动.如有不对的地方,欢迎大家拍砖o(∩_∩ ...

  2. js实现轮播图效果(附源码)--原生js的应用

    1.js实现轮播图效果 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...

  3. 30. leetcode 121. Best Time to Buy and Sell Stock

    121. Best Time to Buy and Sell Stock Say you have an array for which the ith element is the price of ...

  4. linux下添加定时任务

    linux下定时任务文件在/etc/crontab 直接vim /etc/crontab 打开就行 在crontab文件中如何输入需要执行的命令和时间.该文件中每行都包括六个域,其中前五个域是指定命令 ...

  5. SSE图像算法优化系列十:简单的一个肤色检测算法的SSE优化。

    在很多场合需要高效率的肤色检测代码,本人常用的一个C++版本的代码如下所示: void IM_GetRoughSkinRegion(unsigned char *Src, unsigned char ...

  6. Lenovo T440p 外放没有声音

    背景:Lenovo T440p,今天突然想听会歌 外放竟然没声音,fuck!!! 任务栏声音图标也没有静音标志. 驱动出问题了?检查下驱动,正常. 找了耳机试下,正常,看来驱动真的没问题. 喇叭坏了? ...

  7. C++算法接口使用参考

    C++算法接口参考 算法参考:[algorithm] 编译:g++ -std=c++11 xxx_algorithm.cpp 运行:./a.out 1.保持原序列运算 all_of template ...

  8. [Google Codejam] Round 1A 2016 - The Last Word

    [Problem Description] Problem On the game show The Last Word, the host begins a round by showing the ...

  9. Mac实用操作技巧(四)

    在文档编辑状态下更改文件名.保存位置 在编辑文档的时候,有时候想随时更改文件名或者更改文件的保存位置.通常情况下,比如Windows环境中,想要更改文件名,首先需要关闭文档,否则不能修改:想要更改文档 ...

  10. centos 7.2 配置Nginx

    1.添加资源 添加CentOS 7 Nginx yum资源库,打开终端,使用以下命令(没有换行): rpm -Uvh http://nginx.org/packages/centos/7/noarch ...