fab*_*bio 5 python python-import class-method
我希望这不是一个愚蠢的问题,但我发现他们导入的classmethod代码和一些他们没有的代码,所以有区别?
我正在使用python 3.6,但我认为最初的代码是用于python 2.7(它使用的from __builtin__ import)
import unittest
from selenium import webdriver
from builtins import classmethod #original code was from __builtin__ import classmethod
class HomePageTest(unittest.TestCase):
@classmethod
def setUp(cls):
# create a new Firefox session
cls.driver = webdriver.Firefox()
cls.driver.implicitly_wait(30)
cls.driver.maximize_window()
# navigate to the application home page
cls.driver.get("http://demo-store.seleniumacademy.com/")
def test_search_field(self):
pass
#My tests without @classmethod
@classmethod
def tearDown(cls):
# close the browser window
cls.driver.quit()
if __name__ == '__main__':
unittest.main(verbosity=2)
Run Code Online (Sandbox Code Playgroud)
通常,您只需要导入builtins,或者__builtin__代码中还有一个与内置变量同名的变量,并且还想访问内置名称。该模块的文档对此进行了很好的解释:
\n\n\nbuiltins \xe2\x80\x94 内置对象
\n\n该模块提供对Python所有\xe2\x80\x98built-in\xe2\x80\x99标识符的直接访问;例如,
\n\nbuiltins.open是内置函数的全名open()。有关文档,请参阅内置函数和内置常量。大多数应用程序通常不会显式访问该模块,但在提供与内置值同名的对象的模块中非常有用,但在该模块中也需要该名称的内置值。例如,在一个模块中想要实现一个
\n\nopen()封装了built-in的函数open(),可以直接使用这个模块:Run Code Online (Sandbox Code Playgroud)\nimport builtins\n\ndef open(path):\n f = builtins.open(path, \'r\')\n return UpperCaser(f)\n\nclass UpperCaser:\n \'\'\'Wrapper around a file that converts output to upper-case.\'\'\'\n\n def __init__(self, f):\n self._f = f\n\n def read(self, count=-1):\n return self._f.read(count).upper()\n
但是,在您的情况下,文件中似乎没有classmethod定义,因此您实际上并不需要from builtins import classmethod.