上回书说到 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. 【PHP】linux+php5.1.6+mysql5.0.2+apache2.0.55安装配置说明(转)

    linux+php5.1.6+mysql5.0.2+apache2.0.55安装配置说明:一.mysql5.0.2的安装配置过程及说明:1. #tar -zvxf mysql-5.0.2-alpha. ...

  2. Chrome调试工具developer tool技巧

    Chrome这个浏览器赞的不能再赞了,给前端的开发调试工作带来了极大的效率提升. Chrome的简洁.快速吸引了无数人,它的启动速度.页面解析速度都很快,同时得益于Google V8的快速,Javas ...

  3. cesium根据经纬度计算距离

    var startLatitude = 36;var startLongitude = 120; var endLatitude=34; var endLongitude=121; var start ...

  4. year:2017 month:7 day:19

    2017-07-19 JavaScript 一:javascirpt的对象 1:数组对象 声明方式:(1)var arr=new Array(): (2)var arr=new Array(12): ...

  5. decode

    含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN ...

  6. Dubbo负载均衡策略

    在集群负载均衡时,Dubbo提供了多种均衡策略,缺省为random随机调用. 可以自行扩展负载均衡策略,参见:负载均衡扩展Random LoadBalance 随机,按权重设置随机概率. 在一个截面上 ...

  7. 《撸轮子系列》之LoadPE

    前言 我新书<Python爬虫开发与项目实战>出版了. 这本书包括基础篇,中级篇和深入篇三个部分,不仅适合零基础的朋友入门,也适合有一定基础的爬虫爱好者进阶,如果你不会分布式爬虫,不会千万 ...

  8. 解决QT编程出现 C2001错误

    最近做项目时,在debug输出或者是在其他用到字符串常量的时候,总会时不时的出现C2001错误,提示"常量中有换行符", 比如 tr("删除此设备") 或者 q ...

  9. Kotlin 初窥门径[2]:流程控制

    流程控制语句是编程语言中的核心之一.可以分为分支语句.循环语句和跳转语句.本文将详细介绍一下 Kotlin 中的流程控制语句. If 表达式 在Kotlin中一切都是表达式,也就是说一切都返回一个值. ...

  10. 英文面试&笔试

    Topics:1.Talk about your carreer plan2.In ten years, what kind of people you will be? At that time,w ...