Je veux compter le nombre de tests dans un répertoire sans exécuter les tests.
J'ai essayé quelque chose de similaire à ce que j'ai trouvé dans ceci , mais n'a pas pu imprimer autre chose que 0
. p>
Voici ce que j'ai essayé (avec et sans les éléments de configuration commentés):
task 'count_specs' do RSpec.configure do |config| config.pattern = 'features/**/*_spec.rb' # config.inclusion_filter.rules # config.filter_run focus: true # config.run_all_when_everything_filtered = true # config.inclusion_filter.rules config.requires = ['spec_helper'] config.load_spec_files puts 'count of examples' puts config.files_to_run puts RSpec.world.example_count end puts 'count of examples' puts RSpec.world.example_count end
Comment puis-je créer une tâche qui compte le nombre d'exemples correspond à un modèle spécifique?
Je veux exécuter ceci sur deux répertoires et comparer le résultat.
3 Réponses :
Il existe peut-être une méthode RSpec spécifique pour cela, mais je suggère ce script:
RSpec.describe 'smth' do array.each do |i| it { should_smth } end end
Il est très naïf mais fiable.
Cette variante de recherche " it "
et " scenario "
, mais vous pouvez changer de modèle si vous le souhaitez.
Cette variante ne fonctionne que pour les tests sans blocs comme
Dir["**/*_spec.rb"].map { |path| File.read(path) }.join.scan(/( it)|( scenario)/).count
Cela ne fonctionne pas s'il existe des groupes d'exemples partagés ou des exemples définis avec des boucles.
@SajadRastegar, merci, vous avez raison. J'ai ajouté ces limitations à la réponse
J'ai de nombreuses indentations différentes de it
. Je pourrais en vérifier beaucoup, mais je veux simplement m'accrocher à tout ce que RSpec fait déjà pour les compter.
Dans RSpec 3, il existe une option --dry-run
qui imprime la sortie du formateur de votre suite sans exécuter d'exemples ni de hooks.
output = `bundle exec rspec --dry-run | grep 'examples, 0 failures'` example_count = output.split(' ').first.to_i
Si vous avez besoin du nombre d'exemples dans votre script ruby:
rspec --dry-run
Merci pour la suggestion, mais je dois obtenir le example_count par programme. Je peux le faire manuellement, mais j'essaie de trouver un moyen de le faire en utilisant l'objet RSpec.
Pas besoin de il "échoue dans l'exemple" faire; échouer; fin
. Il a fait +1 exemple
@ carterw485 Que voulez-vous dire par comptage par programmation? Vous voulez dire une variable nommée example_count
dans votre code ruby pour enregistrer le nombre d'exemples?
Ouais. Je veux utiliser tout ce que RSpec utilise pour compter les exemples. RSpec.world.example_count
devrait fonctionner, mais obtenir RSpec pour le mettre à jour est ce avec quoi j'ai du mal.
@ carterw485 Vérifiez la réponse mise à jour. Est-ce que ça marche?
RSpec.configuration.world.example_count This is undocumented so it could break in future releases. Note that this is the cumulative number of tests that have run, so the number isn't accurate until the after every test has run.
Vous pouvez essayer d'utiliser le Option
--dry-run
Depuis la documentation Utilisez l'option --dry-run pour que RSpec imprime la sortie du formateur de votre suite sans exécuter d'exemples ou de hooks.