导入并运行文件

时间:2016-12-04 14:20:08

标签: python-3.x python-import python-importlib

我对Python有点新鲜,出于某种原因,我无法理解某些内容。

从命令行我运行

python3 myfile.py

它有效,在文件的底部是这个,它运行我的类,运行该类的位显示如下(我刚刚包含了一些调用其余部分的部分

if __name__ == "__main__":
    dir = os.getcwd()
    reportoutputpath="reports"
    reportfilename=casedetails['hcname'] + ".html"
    ......

我想要做的是从我的代码运行完整的文件,我试过这个

pathforidefiles="/home/ubuntu/idefiles"
sys.path.append(pathforidefiles)
module = __import__("clean-Fern_Britton_Testcase_01")

这似乎是读取文件(我的顶部有一个打印行,看起来确实有效,但实际上并没有执行。我确信我遗漏了Python的工作方式,但我是一个有点迷失。

编辑 我想我可能会以错误的方式解决这个问题,并认为我的问题可能存在。如何将文件主要部分中的内容移动到我导入到正在执行导入的文件中

要导入的文件是这样的

class Examplecase01(unittest.TestCase):
def setUp(self):
    self.driver = webdriver.Chrome()
    self.driver.implicitly_wait(30)
    self.base_url = "http://example.com/"
    self.verificationErrors = []
    self.accept_next_alert = True

def test_fern_britton_testcase01(self):
    driver = self.driver
    ....

if __name__ == "__main__":
  dir = os.getcwd()
  reportoutputpath="reports"
  reportfilename=casedetails['hcname'] + ".html"
  outfile = open(dir + "/" + reportoutputpath + "/" + reportfilename, "w")
  loader = unittest.TestLoader()
  suite = unittest.TestSuite((
    loader.loadTestsFromTestCase(FernBrittonTestcase01)))
  runner = HTMLTestRunner(stream=outfile,
     verbosity=2,
     title=casedetails['hcname'],
     description=casedetails['hcdescription'])
  t = unittest.main(exit=False)
  print (t.result)

然后在正在进行导入的文件中

mymodule=importlib.import_module('cleantest')
#code as above
t = unittest.mymodule(exit=False)  #to replace t = unittest.main(exit=False)

我得到的错误是:module' unittest'没有属性' mymodule'

那么我需要做些什么来使我的代码(在main中)能够在我的视图中进行导入?

1 个答案:

答案 0 :(得分:0)

在考虑了我真正想要做的事情之后,这就是我想出来的(它有效)。我只是真的很想从网站运行它,而不是从命令行运行

loadfile="my-py-file-that-was-created-and-exported-from-the-IDE"
sys.path.append("directory-of-where-my-test-case-is")
mymodule=importlib.import_module(loadfile)

print(mymodule.casedetails['hcversion']) #I can access values in a dict on the imported file

#the below then gets the test case from the imported file
suite = unittest.TestSuite((loader.loadTestsFromTestCase(mymodule.Testcase01)))

在完成工作的视图中,以及上面的代码中,我还拥有原始测试用例主要部分中的大部分代码

我有其他问题\问题,但这个问题已解决

由于

捐赠