2015-07-10 2 views
1

Я относительно новый для python, а правила обзора не имеют для меня большого смысла. Мне не удалось найти какую-либо помощь в решении этой проблемы. Когда я называю Start(ToolTester.RUString) в тех местах, где его не в классе, он будет работать, но когда я пытаюсь его здесь я получаюКадр текущего кадра не был найден в загруженном модуле

Frame not in module. the Current stack frame was not found in a loaded module. Source cannot be shown for this location. 

здесь код для файла. Есть идеи? Благодаря!

import DataFunctions 
import automa 
from DataFunctions import * 
from automa.api import * 

class ToolTester(): 

    def ClickOnCalculator(self, readableTimeStamp): 
     try: 
      RetailWindow = start(r"C:\Users\mhunt\Source\Workspaces\Retail Utilities\Retail Utilities\Retail Utilities\bin\Debug\Retail Utilities.exe") 
      click("POS") 
      click(TextField("Associate Code")) 
      write("722345") 
      click("Enter") 
      click(TextField("Shift Owner: System Admin")) 
      write("722345") 
      click("Enter") 
      click("Tools") 
      click("Calculator") 
      click("Close") 
      click("System", "Close/Suspend Shift") 
      click("yes") 
      kill(RetailWindow) 

      file = open("%s.txt" %readableTimeStamp, "a") 
      file.write("ToolsCalculator Passed!\n") 
      file.close() 
      IncrementingTestPassedCounter.incrementTestPassed(readableTimeStamp) 
     except: 
      file = open("%s.txt" %readableTimeStamp, "a") 
      file.write("ToolsCalculator Failed!\n") 
      file.close() 
      IncrementingTestFailedCounter.incrementTestFailed(readableTimeStamp) 

здесь главный файл

import Tests 
from Tests import * 
import DataFunctions 
from DataFunctions import * 
import datetime 
import time 
from decimal import Decimal 
from ToolsTesting import * 

#txt file written to keep track of results. File name is the timestamp from  when the file was started 
timeStamp = time.time() 
readableTimeStamp =  datetime.datetime.fromtimestamp(timeStamp).strftime("%Y.%m.%d %H.%M.%S") 
Tests.ResultsFileSetup.Setup(readableTimeStamp) 
toolTester = ToolsTesting.ToolTester() 
toolTester.ClickOnCalculator(readableTimeStamp) 
toolTester.ClickOnPrintAMDMatrix(readableTimeStamp) 
toolTester.ClickOnReturnAllocation(readableTimeStamp) 
+0

У вас ПРОБЛЕМЫ! Выделение кода неверно в вашем примере кода, поэтому эта область также нарушена. И вы устанавливаете ToolTester.RUString вместо self.RUString. Вы уверены, что хотите это сделать? – Dalen

+0

отредактировал интервал, все еще имеет такие же проблемы – Shikumaru

ответ

0

Да, я думаю, что это именно ваша проблема:

# You do not call or set an attribute of a class from within a method of that classes instance 
# So: 
class ToolTester: 
    RUString = "" 
    def __init__ (self): 
     self.RUString = "I am string" 

    def GetTheString (self): 
     return self.RUString 

Изменение ToolTester.RUString вместо self.RUString изменяет атрибут класса, а не объекта, созданного из него. Сделать это необычно, и это делается только в особых случаях. Это, на мой взгляд, проблема с Python.

+0

, чтобы убедиться, что нет проблемы, я удалил эту часть кода. У меня все еще такая же ошибка, как раньше – Shikumaru

+0

В главном файле вы сделали «из ToolTesting import *», что означает, что ToolTester() загружается в основной области (сравните с C#include). Либо измените это на «import ToolTesting», либо удалите его ссылку, затем «Tester = ToolTester()». – Dalen

+0

Но для чего это могло бы вызвать ошибку фрейма стека, я не знаю. Ошибка, которую вы должны получить для этого, должна быть «NameError: глобальная переменная« ToolTesting »не определена». Возможно, это нечто большее. – Dalen

Смежные вопросы