自动化测试-数据驱动

看来还是要记录啊,不然看的东西都特么忘记了

目前是在公司做功能测试,恩,是的一个小小的功能测试员,怀着对未来的紧张和不安。。于是乎空闲时间在学自动化测试[接口测试和web端ui自动化测试] 测试小组里有一个大牛是专门做自动化测试的,不过是用工具Robot Framework写的。看了下这个工具学起来还是需要一定的成本的,考虑到之前学了一些python基础,于是学工具这块就打消了就计划着先学会用代码写自动化测试吧。后续再学习这个Robot工具吧。

1.关于自动化测试看了有些时间了,出于练手的目的把公司的项目主流程给撸了一遍。收获不是很大(主要看的是虫大大和悠大大的书selenium2+python自动化测试实战)这2本书的特点就是通俗易懂。(免费给这2位大牛打个广告,呵呵哒)

好了!废话就不扯了

今天就记录2个数据驱动的方法吧,也是从上面那2位大牛get到的,当然可能估计大多数人都知道了,不过没关系咱就当记录加强一遍练习方便后续查看也为不知道这2个方法的同学提供方便查看。下面测试用的python3 ,python2当然也能运行

1.ddt驱动  pip安装      //  pip install ddt  

2.unittest 参数化   pip安装  // pip install parameterized

 

1.ddt 驱动

 1 # coding:utf-8
 2 
 3 
 4 """
 5 数据驱动ddt
 6 python:3.7.0
 7 """
 8 import ddt
 9 import unittest
10 
11 testData=[
12 {"username":"lgh","pwd":"123","text":"登陆成功"},
13 {"username":"","pwd":"123","text":"请输入用户名"},
14 {"username":"xxxx","pwd":"","text":"请再次输入"}
15 ]
16 
17 #模拟登陆
18 def login(username,pwd):
19     if username=="lgh" and pwd=="123":
20         return "登陆成功"
21     elif username=="" and pwd=="123":
22         return "请输入用户名"
23     else:
24         return "请再次输入.."
25         
26 
27 
28 @ddt.ddt
29 class Test_Ddt(unittest.TestCase):
30     
31     @classmethod
32     def setUpClass(cls):
33         print("start")
34         
35     @classmethod
36     def tearDownClass(cls):
37         print("end")
38         
39     @ddt.data(*testData)
40     def test_login(self,data):
41         value=login(data["username"],data["pwd"])
42         self.assertEqual(value,data["text"])
43         
44             
45 if __name__=="__main__":
46     unittest.main()
47         
View Code

 

2.unittest  参数化

 1 # coding:utf-8
 2 
 3 """
 4 数据驱动
 5 unitest的参数化
 6 python:3.7.0
 7 """
 8 import unittest
 9 from parameterized import parameterized
10 
11 
12 #模拟登陆
13 def login(username,pwd):
14     if username=="lgh" and pwd=="123":
15         return "登陆成功"
16     elif username=="" and pwd=="123":
17         return "请输入用户名"
18     else:
19         return "请再次输入.."
20         
21 class Test_Paramet(unittest.TestCase):
22     
23     @classmethod
24     def setUpClass(cls):
25         print("start")
26         
27     @classmethod
28     def tearDownClass(cls):
29         print("end")        
30         
31         
32     @parameterized.expand([
33         ('lgh', "123", "登陆成功"),
34         ("", '123', "请输入用户名"),
35         ("error", "error", "请再次输入"),
36     ])
37     
38     def test_login(self,username, password, assert_text):
39         value=login(username,password)
40         self.assertEqual(value,assert_text)
41         
42 if __name__=="__main__":
43     unittest.main()
44     
45     
View Code

写的比较粗糙,不过大概意思能看懂 - -!写了一个模拟登陆,实际写的自动化测试中这块肯定要替换的了。当然还要加一些等等功能,这里就不说了。

以上2中方法实用场景“操作过程都一样的。如用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式”  这里还有一个小作用就是不用去读excel,xml,json,csv,txt啊一些文件 详见虫大大博客

时候不早了,该睡觉了。。。  2018.8.23

posted @ 2018-08-22 00:56  奔跑的蜗Liu  阅读(378)  评论(0编辑  收藏  举报