2016-12-04 7 views
0

Я немного новичок в 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) 

ошибки я получаю: модуль «UnitTest» не имеет атрибута «MyModule»

Так что мне нужно сделать, чтобы мой код (который был в основном) в работайте на мой взгляд, что делает импорт?

+0

Если я вас правильно понял, вы хотите часть 'if __name__ == '__main __'', выполняемая при импорте файла, не так ли? – Leva7

+0

То есть. Файл, кажется, отлично работает в командной строке – mozman2

+0

Возможный дубликат [Что делает \ 'if \ _ \ _ name \ _ \ _ ==" \ _ \ _ main \ _ \ _ ": \' do?] (Http://stackoverflow.com/questions/419163/what-does-if-name-main-do) – Leva7

ответ

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))) 

По мнению, что делает работу, а также приведенный выше код, у меня есть большая часть кода, который был в основной раздел оригинального теста

у меня есть другие вопросы \ вопросы, но это один решается

Благодарности

Грант