Ich habe die Faked CSV Gem von https://github.com/jiananlu/faked_csv erfolgreich verwendet, um Ihren Zweck der Generierung einer CSV-Datei mit gefälschten Daten zu erreichen.
Gehen Sie folgendermaßen vor, es zu benutzen:
- Öffnen Sie die Befehlszeile (das heißt auf OSX offen Spotlight mit CMD + Raum, und geben Sie "Terminal")
- CSV Gem Faked installieren
gem install faked_csv
Befehl ausgeführt wird. Hinweis: Wenn ein Ruby on Rails-Projekt hinzufügen gem 'faked_csv'
zu Ihrem Gemfile verwenden, und führen Sie dann bundle install
- Validate Faked CSV Gem erfolgreich installiert werden, indem in Bash Eingabe-Terminal
faked_csv --version
- eine Konfigurationsdatei für die Faked CSV Gem und wo Sie definieren wie man gefälschte Daten erzeugt. Im folgenden Beispiel wird eine CSV-Datei mit 200 Zeilen erstellt (oder so viele, wie Sie möchten), und sie enthält durch Kommas getrennte Spalten für jedes Feld. Wenn der Wert des Feldes
type
das Präfix faker:
hat, dann beziehen Sie sich auf Beispiele für den Abschnitt "Verwendung" der Faker Gemhttps://github.com/stympy/faker.
my_faked_config.csv.json
{
"rows": 200,
"fields": [
{
"name": "firstname",
"type": "faker:name:first_name",
"inject": ["luke", "dup", "planc"]
},
{
"name": "lastname",
"type": "faker:name:last_name",
"inject": ["schoen", "orsay", "richard"]
},
{
"name": "home_phone_number",
"type": "rand:int",
"range": [1000000000, 9999999999]
},
{
"name": "mobile_phone_number",
"type": "rand:int",
"range": [1000000000, 9999999999]
},
{
"name": "email",
"type": "faker:internet:email"
},
{
"name": "address",
"type": "faker:address:street_address",
"rotate": 200
}
]
}
- Führen Sie den folgenden Befehl, um die Konfigurationsdatei my_faked_config.csv.json zu verwenden, um eine CSV-Datei in das erzeugen aktueller Ordner mit dem Namen my_faked_data.csv, der die falschen Daten enthält
faked_csv -i my_faked_config.csv.json -o my_faked_data.csv
- Da die generierte Datei möglicherweise nicht das zugehörige Label für jede Spalte nach der Generierung enthält, fügen Sie einfach manuell die folgende Zeile an der Spitze der my_faked_data.csv
firstname,lastname,home_phone_number,mobile_phone_number,email,address
- Überprüfen Sie die endgültige Inhalt des my_faked_data.csv CSV-Datei die gefälschten Daten enthält, die ähnlich der folgenden erscheinen:
my_faked_data.csv
firstname,lastname,home_phone_number,mobile_phone_number,email,address
Kyler,Eichmann,8120675609,7804878030,norene[email protected],56006 Fadel Mission
Hanna,Barton,9424088332,8720530995,[email protected],874 Leannon Ways
Mortimer,Stokes,5645028548,9662617821,[email protected],566 Wilderman Falls
Camden,Langworth,2622619338,1951547890,[email protected],823 Esmeralda Pike
Nikolas,Hessel,5476149226,1051193757,[email protected],276 Reinger Parks
...
- Ändern Sie bitte Ihre person_spec.rb Unit-Test unter Verwendung der Technik unten gezeigt, die in Mock Daten passiert Funktionalität der
import_data
Funktion Ihres Person zu testen. rb Datei
person_spec.rb
require 'rails_helper'
RSpec.describe Person, type: :model do
describe 'Class' do
subject { Person }
it { should respond_to(:import_data) }
let(:data) { "firstname,lastname,home_phone_number,mobile_phone_number,email,address\r1,Kyler,Eichmann,8120675609,7804878030,[email protected],56006 Fadel Mission" }
describe "#import_data" do
it "save new people" do
File.stub(:open).with("filename", {:universal_newline=>false, :headers=>true}) {
StringIO.new(data)
}
Product.import("filename")
expect(Product.find_by(firstname: 'Kyler').mobile_phone_number).to eq 7804878030
end
end
end
end
Hinweis: Ich habe es selbst verwendet, um eine große CSV-Datei mit aussagekräftigen gefälschten Daten für meine Ruby on Rails CSV app zu generieren. Meine App ermöglicht es einem Benutzer, eine CSV-Datei mit bestimmten Spaltennamen hochzuladen und in einer PostgreSQL-Datenbank zu speichern. Anschließend werden die Daten in einer paginierten Tabellenansicht mit der Möglichkeit zum Suchen und Sortieren mit AJAX angezeigt.
Ja, ich denke schon darüber nach, aber ich dachte, es gäbe einen effizienteren Weg. – Orsay