zoukankan      html  css  js  c++  java
  • 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()时必须给它赋值

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

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

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

  • 相关阅读:
    左除与右除的区别--MATLAB
    【FPGA】 007 --Verilog中 case,casez,casex的区别
    Spring Boot企业级博客系统实战视频教程
    Java对象的序列化和反序列化
    消息队列ActiveMQ的使用详解
    消息队列深入解析
    面试中关于Redis的问题看这篇就够了
    一文轻松搞懂redis集群原理及搭建与使用
    渣渣的实习春招总结
    淘淘商城项目补充(5)查询,删除,更新内容列表功能的实现
  • 原文地址:https://www.cnblogs.com/yinze/p/8258712.html
Copyright © 2011-2022 走看看