stanfy / behave-rest Goto Github PK
View Code? Open in Web Editor NEWBDD-style Rest API testing tool
License: Apache License 2.0
BDD-style Rest API testing tool
License: Apache License 2.0
Thanks for sharing Python BDD framework and its really helpful to build over this.
Could you please help to perform POST operation using same framework?
Thanks for building this framework. I need to perform a POST requests with user details that accepts application/json
, how do I do that please?
Здравствуйте Олег!
Я работаю инженером по тестированию backend-а. Как начинающий автоматизатор тестирования, осваиваю Python3.
Во первых, хочу поблагодарить вас за behave-rest - получился очень полезный инструмент для QA-инженера, постоянно используем в работе для тестировния api. :)
Так как я предпочитаю понимать как работает и что делает инструмент, которым пользуюсь, я начал разбираться в структуре фреймворка и сильно так завис на одном моменте.
Вопрос такой: что такое context.r ?
Если предназначение context в behave я понимаю, то происхождение и назначение r поставило меня в тупик.
В behave_rest/steps/init.py неоднократно встречается context.r
Приведу пример:
@step('I want to reuse "{parameter_name}" parameter')
def store_parameter(context, parameter_name): data = context.r.json()
return setattr(context, parameter_name, data[parameter_name])
context.r.json() подозрительно напоминает то, как мы присваеваем объект Responce (модуль requests) в переменную r:
r=requests.get("какой-нибудь урл"), где результат запроса из r потом распарсили в словарь с помощью json().
В дальнейшем, в файле также можно встретить конструкцию context.r.
Связана ли она с модулем requests и если связана, то где во фреймворке behave-rest описано, что в r присваивается объект Responce?
Спасибо за внимание, буду очень рад если проясните ситуацию :)
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/usr/lib/python2.7/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "/home/centos/behave-rest/behave_rest/steps/init.py", line 136, in request_with_parameters
context.r = getattr(requests, request_verb.lower())(url, params, headers=context.headers, verify=context.verify_ssl)
TypeError: get() takes exactly 1 argument (4 given)
Could you please help to resolve this?
@search @twitter
Scenario: Search for tweets # features/twitter.feature:9
Given I set base URL to "https://api.twitter.com/1.1" # behave_rest/steps/init.py:13 0.003s
And I set "Authorization" header to "context.twitter_auth" # behave_rest/steps/init.py:36 0.000s
When I make a GET request to "search/tweets.json" with parameters # behave_rest/steps/init.py:121 0.458s
| q |
| stanfy |
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/usr/lib/python2.6/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "/usr/lib64/python2.6/contextlib.py", line 34, in exit
self.gen.throw(type, value, traceback)
File "/usr/lib/python2.6/site-packages/behave/runner.py", line 454, in use_context_with_mode
yield
File "/usr/lib/python2.6/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "/root/behave-rest/behave_rest/steps/init.py", line 138, in request_with_parameters
log_full(context.r)
File "/root/behave-rest/behave_rest/steps/init.py", line 244, in log_full
'\n'.join('{}: {}'.format(k, v) for k, v in req.headers.items()),
File "/root/behave-rest/behave_rest/steps/init.py", line 244, in
'\n'.join('{}: {}'.format(k, v) for k, v in req.headers.items()),
ValueError: zero length field name in format
Captured stdout:
Captured stderr:
/usr/lib/python2.6/site-packages/requests/packages/urllib3/util/ssl_.py:335: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
SNIMissingWarning
/usr/lib/python2.6/site-packages/requests/packages/urllib3/util/ssl_.py:133: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecurePlatformWarning
/usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py:852: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecureRequestWarning)
Then the response status code should equal 200 # None
And the response status code should be among 200, 201 # None
And the response structure should equal "twitterSearchData" # None
And the response header "status" should equal "200 OK" # None
Failing scenarios:
features/twitter.feature:9 Search for tweets
0 features passed, 1 failed, 0 skipped
0 scenarios passed, 1 failed, 0 skipped
2 steps passed, 1 failed, 4 skipped, 0 undefined
Took 0m0.461s
Am i missing anything, Could you please help?
When I try run the projects (run command line: behave
or behave features/twitter.feature
) my promt shows the log above:
Exception ImportError: No module named yaml Traceback (most recent call last): File "/usr/local/bin/behave", line 11, in <module> sys.exit(main()) File "/Library/Python/2.7/site-packages/behave/__main__.py", line 109, in main failed = runner.run() File "/Library/Python/2.7/site-packages/behave/runner.py", line 672, in run return self.run_with_paths() File "/Library/Python/2.7/site-packages/behave/runner.py", line 677, in run_with_paths self.load_hooks() File "/Library/Python/2.7/site-packages/behave/runner.py", line 631, in load_hooks exec_file(hooks_path, self.hooks) File "/Library/Python/2.7/site-packages/behave/runner.py", line 304, in exec_file exec(code, globals, locals) File "features/environment.py", line 1, in <module> from yaml import load ImportError: No module named yaml
Any idea?
Hi.
Great job, thanks.
Is it possible to connect to an https url without checking the certificate?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.