TypeError: ожидаемый целочисленный конечный аргумент range (), получил int - PullRequest
1 голос
/ 27 марта 2019

Я использую Squish 6.4.2 для тестирования своих приложений Qt, использую Python 2.7.10 в качестве тестового языка сценариев и получаю следующее сообщение об ошибке при попытке использовать функцию range():

TypeError: range() integer end argument expected, got int.

Вот небольшой пример кода и мой вывод в Squish:

def main():
    test.log(str(range(4)))
    test.log(str(range(int(4))))
[0, 1, 2, 3]
Error: Script Error
    Detail: TypeError: range() integer end argument expected, got int.

Как видите, range(4) работает, но range(int(4)) нет.

Я попытался запустить тот же код в консоли Python версии Python, поставляемой с приложением Squish, и там работают оба вызова range().

Python 2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> range(4)
[0, 1, 2, 3]
>>> range(int(4))
[0, 1, 2, 3]
>>>

Также, когда я сравниваю целые числак приведенному int результат сравнения неверен в Squish.Например, в Squish:

def main():
    test.log(str(7<4))
    test.log(str(7 < int(4)))

дает

False
True

В консоли Python результат верный.

1 Ответ

2 голосов
/ 27 марта 2019

Squish int отличается от Python int:

Squish int представляет тип Squish для целого числа в код оболочки C и C ++.

Как и другие скрытые символы, для доступа к функции Python int () один может использовать его из пакета __builtin__ (Python 2) или встроенных (Python 3).

(другие типы тоже разные)

См. Интеллект Сквиша против интервала Питона

Или, в более общем смысле, Python Notes в руководстве по Squish.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...