Мой проект - это инструмент командной строки, написанный на python.Код тестирования спецификаций написан с использованием aruba и rspec.
Приложение запускается bin / project, при запуске из проекта dir оно функционирует правильно, каждый заданный ввод имеет текстовый вывод.
Но когдаЯ запускаю тест спецификации, тесты не пройдены, потому что aruba получает "" для всех входов.Я попытался проверить с помощью command.stderr, ошибки тоже нет.
По каким причинам aruba может получить пустой вывод?
Моя структура каталогов:
- project
- functional_spec
-rakefile
-spec
-tests.rb
- bin
- project.sh
- run_functional_test.sh
- app
- app.py
- __main__.py
Я запускаю bin/run_functional_test
из каталога проекта и не получаю никаких выходных данных от запускаемых команд.
Содержимое rakefile:
require "rspec/core/rake_task"
namespace :spec do
desc "Run the functional suite against the CLI"
RSpec::Core::RakeTask.new(:functional, [] => [:set_path])
task :set_path do
project_bin_dir = File.join(File.dirname(File.expand_path(__FILE__)), '..', 'bin')
ENV['PATH'] = project_bin_dir + ':'+ ENV['PATH']
end
end
Содержимое run_functional_test:
#!/usr/bin/env ruby
project_bin_dir = File.join(File.dirname(File.expand_path(__FILE__)))
functional_spec_dir = File.join(project_bin_dir, '..', 'functional_spec')
cmd = "cd #{functional_spec_dir}; bundle install; bundle exec rake spec:functional"
puts cmd
system cmd
Один из неудачных тестов:
RSpec.describe 'Test Case', type: :aruba do
let(:command) { run "start_cli" }
before(:each) { command.write("sample_input_command") }
it "sample_input_command runs well" do
stop_all_commands
expect(command.output).to end_with("sample output")
end