html tool

显示标签为“Junit”的博文。显示所有博文
显示标签为“Junit”的博文。显示所有博文

2019年6月24日星期一

转: Mock多个函数,主要是注意顺序

参考:https://blog.csdn.net/younger_china/article/details/72904448

原文:

5. Mock多个函数,主要是注意顺序

 1 import unittest
  2 import mock
  3 class Calculator(object):
  4     def add(self, a, b):
  5         return a+b
  6     def multiple(self, a, b):
  7         return a*b
  8      
  9 class TestProducer(unittest.TestCase):
 10     def setUp(self):
 11         self.calculator = Calculator()
 12      
 13     @mock.patch.object(Calculator, 'add')
 14     def test_add(self, mock_add):
 15         mock_add.return_value = 3
 16         self.assertEqual(self.calculator.add(8, 14), 3)
 17      
 18     @mock.patch.object(Calculator, 'add')
 19     def test_effect_list(self, mock_add):
 20         mock_add.side_effect = [1, 2, 3]
 21         self.assertEqual(self.calculator.add(8, 14), 1)
 22         self.assertEqual(self.calculator.add(8, 14), 2)
 23         self.assertEqual(self.calculator.add(8, 14), 3)
 24      
 25     # 这里@的顺序和input是从右向左的
 26     @mock.patch.object(Calculator, 'add')
 27     @mock.patch.object(Calculator, 'multiple')
 28     def test_both(self, mock_multiple, mock_add):
 29         mock_add.return_value = 1
 30         mock_multiple.return_value = 2
 31         self.assertEqual(self.calculator.add(8, 14), 1)
 32         self.assertEqual(self.calculator.multiple(8, 14), 2)
 33      
 34 if __name__=="__main__":
 35     unittest.main()
~                                   
[popexizhi: 这里使用 顺序如下注意
25     # 这里@的顺序和input是从右向左的
 26     @mock.patch.object(Calculator, 'add')
 27     @mock.patch.object(Calculator, 'multiple')
 28     def test_both(self, mock_multiple, mock_add):
 29         mock_add.return_value = 1
 30         mock_multiple.return_value = 2
]

Coverage

打命令coverage加测试文件,就可以得到覆盖率,可以生成html格式的报告,每次运行一个文件都会生成一个.coverage文件,需要将combine所有结果才能得到一个完整的报告。

具体的命令参数参看:http://nedbatchelder.com/code/coverage/cmd.html
[popexizhi: 测试了一下2.7 和3 都可以使用,但是注意安装的对应版本 ,之后有时间可以好好试试]

2019年6月5日星期三

unittest中的测试数据遇到的问题




unittest中的测试数据遇到的问题
  • *_test.py中的testdata有更好的方式设置吗?
    问题:
    当前使用类变量,在每个test_*()中使用,有小变化直接方法内部修改了,但就有如下问题:
     47     def test_check_autocc_alert_in_es(self):                                                                                   
     48         """ test check_autocc_alert_in_es"""                                                                                   
     49         t = autocc_check()                                                                                                     
     50         t.set_ssh(self.dic_test)                                                                                               
     51         pacp_name = "Teamviewer-Win10toWin7.pcap_10.10.51.2"                                                                   
     52         interface = "tap1"                                                                                                     
     53         autocc_check_dic = {"check_type": "autocc" , "check_main_tag":"Teamviewer" }                                           
     54         tcpreplay_para = " -M 1 -l 10 "                                                                                        
     55         t.get_autocc_pacp_ssh(pacp_name, interface, tcpreplay_para)                                                            
     56         print("~~~~~~~~start ssh get es result ---------------")                                                               
     57         print self.dic_test                                                                                                    
     58         self.dic_test["tdp_ip"] = "192.168.100.174"                                                                            
     59         t.set_ssh(self.dic_test, change_sshpass=0)                                                                             
     60         self.dic_test["tdp_ip"] = "127.0.0.1"                                                                                  
     61         #[popexizhi:这种用法太危险了,全部执行unittest时影响测用例后面的测试啊,死都不知道是如何死的,testdata是否有更好的方式呢?]
     62         print t.ssh_ip                                                                                                         
     63         res = t.check_autocc_alert_in_es(autocc_check_dic, "10.10.51.2")                                                       
     64         print res                                                                                                              
     65                                                                                                                                
     66 if __name__ == "__main__":  
    
    

    python *_test.py时,这个test_check_autocc_alert_in_es 执行pass了,但是之后的case就死活过不去,但单独
    python *_test.py Test*.test_* 每个方法就可以运行通过,
    最后发现是上面这个变量修改影响其他方法的使用了,好吧,现在想不出更好的解决,只是用完恢复一下,但是还有更好的,这也太不是自己想要的了。


2019年6月4日星期二

unittest 遇到的问题记录



  • 同目录中的unittest如何一次全部调用运行?当前popexizhi使用的方式是在每个级别中加test.sh,再在总目录下加驱动脚本,不知有更好的方式吗?
  • unittest的测试桩如何使用可以更好的将test从被测试环境分离出来吗?eg:es使用;mysql使用;ssh使用



2015年3月5日星期四

关于Maven对JUint的识别问题

这次的plan是all  testcase 在python和java两个版本运行,首个测试的java问题出现,在改写java后Junit的运行时,发现无法运行测试类,我的定义如下:
public class oppor_test {
      ...
      ...
      @Test
 public void addoppor_Test() throws Exception {

但同一目录下的其他test类都可以,why?测试了一下后来发现是命名问题给为oppor_Test的类名称就可以运行了。
我用的是Junit 4.10 ,在MyEclipse中junit运行是没有问题,看来一定是Maven的问题,google了一下,原来如此啊:
参考:http://stackoverflow.com/questions/6178583/maven-does-not-find-junit-tests-to-run

---------------------------------
By default Maven uses the following naming conventions when looking for tests to run:
  • Test*
  • *Test
  • *TestCase
Your test class doesn't follow these conventions. You should rename it or configure Maven Surefire Plugin to use another pattern for test classes.
---------------------------------------------
原来却是Maven的小秘密啊:).ok了.默认设置的Test本身包含都ok,Testcase结尾的。
PS:此事顺便想到,自己的命名方式应该同一一下了,不区分语言的区分一下,看来是再详细了解一下Jone 说的 系统匈牙利命名法 的使用了。:)

2014年8月28日星期四

selenium] about java using in Eclipse

selenium] about java using in Eclipse
[?]1.使用Maven的top.xml没有编译成功([go]why)
[ok]2.add build path -> 导入外部lib Junit4 & selenium-java-2.42.2.zip 解压后的 *.jar ;run in Junit is ok

[?] 3.how to run ing cmd {use java 命令方式how to}