python引用方法赋值问题探究

   python脚本编写中,经常会遇到引用一个模块的方法的场景。引用的方法里到底赋不赋值曾经困扰了我好久。

    最近利用python写了一个接口自动化测试脚本,在查阅观看多篇博文和视频后解决了封装方法引用的问题。自认为相对熟悉了封装方法引用这一块知识点,以下将具体阐述

以封装post请求的url方法为例

1、未封装前的代码如下:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

 

import requests

import unittest

 

class Demo(unittest.TestCase):

     def setUp(self):

         domain = 'http://192.168.1.1'

         endpoint = '/bo/ke/yuan/sousuo'

         self.url = ''.join([domain,endpoint])       #该值为样例,无任何实际意义

     def test_Demo1(self):

          try:

             result = requests.post(self.url,data=data)

             self.assertEqual(result.text,200)

             print ("Demo1测试通过")

          except Exception as e:

              print ('Demo1测试不通过’, e)

       def tearDown(self):

              pass

if __name__ == '__main__':

        unittest.run() 

2、对Demo类的domain值进行封装,创建Public包,在Public包下创建config类,代码如下:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

def get_domain():

   domain = 'http://192.168.1.1'

    return domain

3、Demo类引用Public包下的config类,代码如下:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

 

import requests

import unittest

from Public import config   #引入Public模块

 

class Demo(unittest.TestCase):

     def setUp(self):

         domain = config.get_domain()  #因为在Public包的config类里get_domain()没有在小括号里赋值,所以此处引用不需要赋值

         endpoint = '/bo/ke/yuan/sousuo'

         self.url = ''.join([domain,endpoint])       #该值为样例,无任何实际意义

………………………………

………………………………

4、为了安全和维护方便,可以继续对Demo类的self.url进行封装,在Public包创建base类,代码如下

#!/usr/bin/python

# -*- coding: UTF-8 -*-

 

from Public import config

 

class url():

  def get_url(Endpoint):

    domain = config..get_domain() 

    endpoint = Endpoint

    url = ''.join([domain,endpoint])

    return url

5、Demo类调用Public包的base类,代码如下:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

 

import requests

import unittest

from Public import base # 引用base类

#from Public import config   因为base类引用了config类,此处的config可以删掉

 

class Demo(unittest.TestCase):

     def setUp(self):

         endpoint = '/bo/ke/yuan/sousuo'

         self.url = base.get_url(endpoint)      #因为在base类中给get_url()中的()中赋值,因此引用get_url()时必须给它赋值

………………………………

………………………………

以上简单介绍了一下引用方法的括号内何时赋值何时不赋值的问题,工作中或许还会遇到更复杂的封装,大家可以相应的变通,原理是一样的。

 

posted on 2018-01-17 18:31  希望的天空  阅读(1200)  评论(0编辑  收藏  举报