macaca 测试web(3)起名

 

  前几日就讲述下自个儿在自定义表单中的跳进度中U本田UR-VL参数字传送递的拍卖。

 

  平常的支付中,大家举办U奇骏L传参时,肯定都会定义3个有意义的参数名,让接受页面去Request获取,这未尝难点,但要是是在自定义表单中,参数的称呼上一般都会相比的稳定,系统识其余名称无非就那约定好的有的,所以不可能再经过愈来愈多的&符号来间隔的传递参数,那该怎么处理呢?大家得以预约一定的格式,将参数实行数组化,通过定位的参数名传递,样子如下:PPI_ID|PPI20100304001,PSF_ID|PSF20101210002。

      上回书说到 macaca
测试web(2)
 
使用ddt做参数驱动化,
有个别人会说,你好low,笔者说怎么low呢,他说您看看你的脚本就置身一个文本里,对于大家小白来说,那看起来很乱啊,能否给自家拆分,拆分,于是乎,你有须求,作者有方案,你有您的供给,作者有本身的方案,小编的方案会满足你的急需,
你是产品经营,作者是测试,作者来给您拆分,拆分,

  那样的参数名即简练又易书写,而且系统可以很好的分辨,很显然的看出参数是经过”,”将相继参数进行分隔,再经过”|”将参数名与参数值分隔,至于在UHavalL中的名称就好起名了,就叫它Param了。

那么大家先看看上节课的台本,

  在收受页的拍卖方面,在此间是因此独立的参数类来处理的,因为系统中的表单参数都以经过那类方式传送,所以用到的地点必定特别多,将参数作用独立化,也是挺便宜的,统一的主意去分析表单参数,更好的保养它们。直接贴下代码吧:

  

 1 /// <summary>
 2     /// 参数分隔辅助类,样式如:PPI_ID|PPI20100304001,PSF_ID|PSF20101210002,
 3     /// 提供对参数的分解及返回键值列表信息
 4     /// </summary>
 5     [Serializable]
 6     public class SplitParam
 7     {
 8         /// <summary>
 9         /// 参数字符串
10         /// </summary>
11         /// <param name="param"></param>
12         public SplitParam(string param)
13         {
14             this.Param = param;
15         }
16 
17         public override string ToString()
18         {
19             return Param;
20         }
21 
22         private string _param = string.Empty;
23         /// <summary>
24         /// 参数字符串
25         /// </summary>
26         public string Param
27         {
28             get { return _param; }
29             private set
30             {
31                 if (!string.IsNullOrEmpty(value))
32                 {
33                     _param = value;
34                 }
35             }
36         }
37 
38         /// <summary>
39         /// 保存解析过的参数列表
40         /// </summary>
41         private Dictionary<string, string> _paramList = null;
42 
43         /// <summary>
44         /// 获取解析后的参数列表信息,可用于参数替换等
45         /// </summary>
46         /// <returns></returns>
47         public Dictionary<string, string> GetParamList()
48         {
49             if (_paramList == null)
50             {
51                 _paramList = new Dictionary<string, string>();
52                 string[] listA = _param.Split(',');
53                 if (listA == null || listA.Length == 0)
54                 {
55                     return _paramList;
56                 }
57 
58                 string[] listB;
59                 foreach (string item in listA)
60                 {
61                     if (!string.IsNullOrEmpty(item))
62                     {
63                         listB = item.Split('|');
64                         if (listB != null & listB.Length > 1)
65                         {
66                             _paramList.Add(listB[0], listB[1]);
67                         }
68                     }
69                 }
70             }
71             return _paramList;
72         }
73 
74         /// <summary>
75         /// 根据键值获取获取值
76         /// </summary>
77         /// <param name="key"></param>
78         /// <returns></returns>
79         public string GetValueByKey(string key)
80         {
81             GetParamList();
82             if (_paramList != null && _paramList.ContainsKey(key))
83             {
84                 return _paramList[key];
85             }
86             return "";
87         }
88     }
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一下

起名 1

oh,那成功了吗,不信,你给小编看看您的测试报告

起名 2

总的来看了呢,还信不信,满足不满意你的急需,不满足,不满足,那您要干啥,那不是还有能够提出来的呢,哪个地方,哪里告诉我,笔者来看了,我来看了,定位的,定位的。

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保持不变

来来,小伙运营下:

起名 3

自个儿要看测试报告

起名 4

青年你弄的不易了,小伙,后天的急需到此处,到这里,你能够下班休息了。

 

oo,太让自家心情舒畅了。、

 

 

别的笔者提供vip指导,python自动化,python学习方面,python做测试开发方面,笔者都会提供辅导,vip毕生有效,现价1500,联系qq:952943386,稍后会更新qq群,喜欢的朋友能够来,本人也是从一个不懂啥是python到今后能做东西,从15的2k到17的10k+都以辛酸泪,能够与大家一起共勉,提供思路,能够让你走的更远,笔者也是从白纸一卡瓦略步步走来,假使你是新结业的上学的小孩子那么些也适合您,能够给您引导,不过笔者能做的正是带你,不过自身不是培养和磨炼班,没有提供就业的火候,作者只会在有机遇的时候给您推荐,学无边无际,此时说不定本人只得教你有个别测试,提供职业辅导,作者大概今后会带给你越来越多。

自我是1个大学专科学生,也是一位发奋到明天。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图