接口自动化入门到精通遇到的问题及处理办法

一.执行类中的方法错误

错误提示:TypeError: demo01() missing 1 required positional argument: 'self'
错误代码:

class Demo:
    def demo01(self):
        print("demo")

Demo.demo01()

正确代码:

class Demo:
    def demo01(self):
        print("demo")

de=Demo()
de.demo01()

错误原因及解释:

这个错误提示“TypeError: get_token() missing 1 required positional argument: 'self'”是Python中非常常见的错误,它通常发生在尝试以非实例方法的方式调用一个实例方法时。

在Python中,实例方法的第一个参数总是self,它代表实例本身。当你创建一个类的实例并调用它的方法时,Python会自动将该实例作为第一个参数传递给该方法。但是,如果你尝试直接从类本身而不是从实例调用该方法,你需要手动传递该实例。

二.一个类中的不同的方法,其中一个方法要引用另一个方法的变量的办法

方法一、将方法中的变量转换为类变量,通过引用类变量。

需要更改的代码

class Demo:
    
    def demo01(self):
        de01="demo01"
        
    def demo02(self):
        de02=de01

更改后代码

class Demo:
    de01=""
    def demo01(self):
        Demo.de01="demo01"

    def demo02(self):
        de02=Demo.de01
        print(de02)
#必须执行demo1将变量传到类变量
Demo().demo01()
Demo().demo02()

方法二、将方法中产生的变量返回,通过调用方法引用变量

 需要更改的代码

class Demo:
    
    def demo01(self):
        de01="demo01"
        
    def demo02(self):
        de02=de01

更改后代码

class Demo:
    def demo01(self):
        de01="demo01"
        return de01
    def demo02(self):
        de02=self.demo01()
        print(de02)
        
Demo().demo02()

三.python中在字符串中引用变量

例如,当需要执行下边函数时,需要填写一个sql,sql中createtime需要引用已经存在的变量。但是双引号中是字符串,引用变量后就会失效解决办法:

format是一个字符串方法,用于字符串格式化。它允许你将变量插入到字符串的占位符中,从而创建出动态内容的字符串。

# 使用位置参数
name = "Alice"
age = 30
greeting = "My name is {} and I am {} years old.".format(name, age)
print(greeting)  # 输出: My name is Alice and I am 30 years old.

# 使用关键字参数
greeting = "My name is {name} and I am {age} years old.".format(name=name, age=age)
print(greeting)  # 输出: My name is Alice and I am 30 years old.

# 使用填充和对齐
text = "{:>10}".format("hello")
print(text)  # 输出:       hello (字符串右对齐,总宽度为10)

# 使用宽度和精度
number = 3.14159
formatted_number = "{:.2f}".format(number)
print(formatted_number)  # 输出: 3.14 (保留两位小数)

其他格式化方法

在Python中,f是一个特殊的语法,用于格式化字符串(也称为“f-string”)。fF紧随在字符串开头的引号之后,表示这是一个格式化字符串。在字符串内部,大括号{}可以用来嵌入表达式,这些表达式会在运行时被计算并替换为大括号内的值。

例如:

python

name = "Alice"
age = 25
formatted_string = f"My name is {name} and I am {age} years old."

在这个例子中,formatted_string将会是字符串 "My name is Alice and I am 25 years old."{name}会被替换为变量name的值,{age}会被替换为变量age的值。

使用百分号格式化

python

复制

print("请求发生异常:%s" % e)

在Python的早期版本中,您可以使用百分号%来格式化字符串。对于不同的数据类型,您需要使用不同的格式化符号,例如%s用于字符串,%d用于整数,%f用于浮点数等。

使用字符串拼接

python

复制

print("请求发生异常:" + str(e))

您可以通过将异常对象e转换为字符串,然后使用加号+来拼接字符串。这种方法比较简单,但当您需要拼接多个变量时,代码可能会变得比较复杂和不清晰。

四.resquests发送请求时证书验证失败的解决办法

1.错误信息

requests.exceptions.SSLError: HTTPSConnectionPool(host='api.klwk.ren', port=443): Max retries exceeded with url: /blade-auth/oauth/token (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)')))

2.错误原因:

这个错误是由于SSL证书验证失败导致的。当您尝试使用requests库进行HTTPS请求时,Python会尝试验证服务器的SSL证书。如果证书不受信任或者证书链不完整,Python会抛出SSLError

错误消息中的CERTIFICATE_VERIFY_FAILED表明Python无法验证服务器的证书。这可能是因为服务器使用了自签名证书,或者证书链中缺少中间证书。

3.解决办法

忽略SSL证书验证: 这是一个危险的操作,因为它会使您的连接容易受到中间人攻击。仅在信任的环境中且您完全了解风险的情况下使用此方法。

requests.get('https://api.klwk.ren', verify=False)

忽略证书会有风险,还是会报一个错误

C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\connectionpool.py:1095: InsecureRequestWarning: Unverified HTTPS request is being made to host 'api.klwk.ren'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings
  warnings.warn(

这个警告是因为您在忽略SSL证书验证的情况下发出了HTTPS请求。urllib3库(requests库底层使用的HTTP客户端)默认会显示这个警告,以提醒您这种做法存在安全风险。

警告信息指出,您正在向api.klwk.ren发送未经验证的HTTPS请求,并建议您添加证书验证。这是为了防止中间人攻击和其他安全威胁。

import requests
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
response = requests.get('https://api.klwk.ren', verify=False)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值